Movatterモバイル変換


[0]ホーム

URL:


BLOGTIMES

cles::blog

平常心是道
« :: »
2010/06/27

C と C++ と void*

  c  cpp 
このエントリーをはてなブックマークに追加

先日、malloc() の返り値は void* なので、ずっと明示的にキャストしないといけないと思ってた(というか、そう教わったからそういうものだと思ってた)けど、実はそうではないらしい*1ということが分かったので忘れないうちにメモ。

test.c

#include <stdlib.h>int main(){ int* i = malloc(sizeof(int)); return 0;}

実際に上記のようなプログラムを書いてコンパイルしてみると、Cのときは特にエラーも出なくて、C++にするとコンパイラが怒るのがわかります。

$ gcc test.c$ g++ test.ctest.c: In function 'int main()':test.c:3: error: invalid conversion from 'void*' to 'int*'

クセとしてはいつでもキャストするように覚えておいたほうが都合いいから、教える方がそうしていたということなんでしょうか。ただ、C でも void* を間接参照して値を格納しようとするとエラーになるので、型チェックの仕様はちょっと謎。もともと方言が多い処理系だからあまり深くつっこんじゃいけない部分なのかもしれませんが。


byhsur at 19:02[5年前][4年前][3年前][2年前][1年前][1年後][2年後][3年後][4年後][5年後] |
こんな記事もあります 「エラー キャスト 返り値
2024 年の人気エントリ Top 100
ICMP の TTL は OS によって違う?
2023 年の人気エントリ Top 100
コマンドプロンプトが起動できない(起動してもすぐにウィンドウが消えてしまう)時に確認すべきこと
Yubikey を SSH の公開鍵認証として使う
Pytyon で「OSError: [WinError 1314] クライアントは要求された特権を保有していません」が出るときは
OmniOS/ZFS サーバに wbadmin でイメージバックアップが取れない時に確認すべきこと
MariaDB が yum/dnf でアップデートできなくなっていたので
ヨーロッパでは Yahoo! が使えない!?
SeleniumWrapperVBA でブラウザを Excel から制御する
トラックバックについて
Trackback URL:
お気軽にどうぞ。トラックバック前にポリシーをお読みください。[policy]
このエントリへのTrackbackにはこのURLが必要です→https://blog.cles.jp/item/3625
Trackbacks
このエントリにトラックバックはありません
Comments
愛のあるツッコミをお気軽にどうぞ。[policy]
古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
コメントはありません
Comments Form

コメントは承認後の表示となります。
OpenIDでログインすると、即時に公開されます。

OpenID を使ってログインすることができます。

Identity URL:Yahoo! JAPAN IDでログイン

« :: »
Copyright © 2004-2023 by CLES All Rights Reserved.
サイト内検索
検索ワードランキング
へぇが多いエントリ
閲覧数が多いエントリ
1 .アーロンチェアのポスチャーフィットを修理(100540)
2 .福岡銀がデマの投稿者への刑事告訴を検討中(99859)
3 .年次の人間ドックへ(99818)
4 .三菱鉛筆がラミーを買収(99411)
5 .2023 年分の確定申告完了!(1つめ)(99386)
最新のエントリ
cles::blogについて
誰が書いてる?
最近行った場所
サイトポリシー
タグ一覧
検索ワードランキング

Referrers

    Powered by CLES
    Nucleus CMS v3.31SP3/w memcached
    21393796(W:4455 Y:1531 T:0062)
    cles::blogのはてなブックマーク数
    benchmark


    [8]ページ先頭

    ©2009-2025 Movatter.jp