- ベストアンサー
reallocについて
以下のソースでmallocやreallocの使い方で間違った部分があれば 指摘してください。 #include <iostream.h> #include <malloc.h> typedef unsigned char byte; main() { byte *p = (byte*)malloc(10); memcpy(p, "123456789", 9); p = (byte*)realloc(p, 5); *(p+4) = 0; printf("%s", (char*)p); p = (byte*)realloc(p, 0); return 0; } realloc(p, 5)のようにreallocでメモリブロックを10から5に 小さくしてもいいんですか? 足りなくなったメモリを増やすためのreallocしか見たことがありません。 reallocでは先頭バイトの位置が保たれていることは保証されますか? 別の言い方をすると、memcpy(p, "123456789", 9);によって 1が入ってるバイトを、reallocした後の*pが差すことが保証されていますか? もし保証されるなら、例えば上記のソースで1234と表示される 別の言い方をすると、reallocでメモリブロックの値は変更されない ことは保証されていますか?
- みんなの回答 (3)
- 専門家の回答
関連するQ&A
このQ&Aのポイント
- micro SDHD(MF-DRMR032G11)のご利用の端末タイプ・OSや製品名・型番、発生時期についてお知らせください。
- お困りごとの詳細や使っている機器の状況、表示される内容をお書きください。
- エレコム株式会社の製品に関する質問です。ご利用のmicro SDHD(MF-DRMR032G11)についてのお困りごとをお知らせください。
お礼
ありがとうございます。 前の、いきなり realloc もやることができました。