C言語関係掲示板

過去ログ

No664 callocとmalloctとreallocについて

[戻る] [ホームページ]
No.7365

callocとmalloctとreallocについて
投稿者---longman(2003/06/13 01:42:33)


callocとmalloctとreallocについてなのですが、

(int *)calloc(500,sizeof(int));
(int *)malloc(500*sizeof(int));
(int *)realloc(NULL,500*sizeof(int));

上記3つは同じ意味でよろしいのでしょうか?

No.7367

Re:callocとmalloctとreallocについて
投稿者---こん!(2003/06/13 06:31:12)


>(int *)calloc(500,sizeof(int));
>(int *)malloc(500*sizeof(int));
>(int *)realloc(NULL,500*sizeof(int));

>上記3つは同じ意味でよろしいのでしょうか?

メモリを確保という意味では同じかもしれませんが確保した後のメモリの状態に
注意してみましょう。

No.7368

Re:callocとmallocとreallocについて
投稿者---longman(2003/06/13 07:42:27)


>>(int *)calloc(500,sizeof(int));
>>(int *)malloc(500*sizeof(int));
>>(int *)realloc(NULL,500*sizeof(int));
>
>>上記3つは同じ意味でよろしいのでしょうか?
>
>メモリを確保という意味では同じかもしれませんが確保した後のメモリの状態に
>注意してみましょう。

callocは0クリアされ、mallocは0クリアされないと書いてあったのですが、0クリアとは初期化と考えてよろしいのでしょうか?
また、reallocについては特に書かれてなかったのですが、NULL(0)を指定した場合には、mallocと同様の動作をするということは、やはり0クリアされないのでしょうか?

質問ばかりでスミマセン。

No.7369

Re:callocとmallocとreallocについて
投稿者---こん!(2003/06/13 09:00:20)


>0クリアとは初期化と考えてよろしいのでしょうか?

初期化という言葉に何か特別な意味があるのでしょうか?私にはよくわからない
のですが?0クリアされるというのですからメモリ確保された後で確保されたエ
リアが0で埋まっているのでしょう。

>また、reallocについては特に書かれてなかったのですが、NULL(0)を指定

よく読みましょう。引用失礼。(管理人さん)
>【説明】
・・・
>す。古いメモリブロックにあったデータは可能な限り新しいメモリブロックにコ
>ピーされます。



No.7371

Re:callocとmallocとreallocについて
投稿者---YuO(2003/06/13 09:13:45)


>callocは0クリアされ、mallocは0クリアされないと書いてあったのですが、0クリアとは初期化と考えてよろしいのでしょうか?

初期化ではないです。初期化する値は0とは限りませんから。
#個人的には初期化とは厳密に初期化宣言子を使って行う物のみを指すとしていますが……。

また,
・浮動小数点数の0.0の内部表現
・空ポインタの内部表現
が全ビット0とは限りません。
つまり,浮動小数点数やポインタは滅茶苦茶な値を示していることがあります。


>また、reallocについては特に書かれてなかったのですが、NULL(0)を指定した場合には、mallocと同様の動作をするということは、やはり0クリアされないのでしょうか?

されません。