次のコードで無効なメモリ エラーが発生します。
printf(" %s\n","FINE 5");
printf("%s LENGTH IS: %d\n","FINE 6",strlen(": "));
buffer = (char *)realloc(buffer, strlen(buffer)* sizeof(char) + (strlen(": ")+1)* sizeof(char));
printf(" %s\n","FINE 7");
strcat(buffer, ": \0");
出力:
FINE 5
FINE 6 LENGTH IS: 2
* glibc が検出されました * ./auto: realloc(): 無効な次のサイズ: 0x08cd72e0 *** ======= バックトレース: ========= /lib/tls /i686/cmov/libc.so.6(+0x6b591)[0x6dd591]
ここで注意すべき点Fine 7
は、決して印刷されないことです。すべての実行で無効な次のサイズのエラーが同じ場所にあります。
この関連性を見つけました