提示コードはnew で確保した物をrealloc関数でメモリブロックを伸ばしています。つまりC++言語の関数で確保してc言語の関数でメモリサイズを伸ばして居るのですが普通に出てきてしまいます。reallocのリファレンスには第一引数**: malloc関数、calloc関数、realloc関数を用いて確保したヒープメモリへのポインタ。**と書いてありますが
実際のところどうなのでしょうか?
参考サイト: http://www9.plala.or.jp/sgwr-t/lib/realloc.html
cpp
1#include <iostream> 2 3 4 5 6typedef unsigned char byte; 7 8 9 10void print(const byte *a,const int size) 11{ 12 for (int i = 0; i < size; i++) 13 { 14 printf("%x ",a[i]); 15 } 16 17} 18 19int main() 20{ 21 int fileSize = 10; 22 byte* a = new byte[fileSize]; 23 24 for (int i = 0; i < fileSize; i++) 25 { 26 a[i] = 0x00; 27 } 28 29 print(a,fileSize); 30 31 printf("\n\n\n\n"); 32 fileSize = 20; 33 34 realloc(a,fileSize); 35 36 37 38 for (int i = 0; i < fileSize; i++) 39 { 40 a[i] = 0x00; 41 } 42 43 44 45 46 print(a, fileSize); 47 48 return 0; 49}
回答2件
あなたの回答
tips
プレビュー