重複の可能性:
malloc(0)のポイントは何ですか?
malloc(0)が実際に書き込み用の有効なポインターを返すのはなぜですか?
char *str = NULL;
str = (char*)malloc(0); // allocate 0 bytes ?
printf("Pointer of str: %p\n", str);
strcpy(str, "A very long string ...................");
printf("Value of str: %s", str);
free(str); // Causes crash if str is too long
出力:
Pointer of str: 0xa9d010
Aborted
Value of str: A very long string ...................
が短い場合str
は、正常に機能します。
ところで:コンパイルには、「-D_FORTIY_SOURCE=0-fno-stack-protector」を指定してGCCを使用しました
*** glibc detected *** ..: free(): invalid next size (fast): 0x0000000000a9d010 ***