このコードの問題点は何ですか? 毎回クラッシュします。
失敗したアサーション「_ASSERTE(_CrtIsValidHeapPointer(pUserData));」である場合もあれば、単なる「ヒープ破損」エラーである場合もあります。
バッファサイズを変更すると、この問題に奇妙な影響があります。「realloc」でクラッシュすることもあれば、「free」でクラッシュすることもあります。
このコードを何度もデバッグしましたが、ポインターに関して異常はありません。
char buf[2000];
char *data = (char*)malloc(sizeof(buf));
unsigned int size = sizeof(buf);
for (unsigned int i = 0; i < 5; ++i)
{
char *ptr = data + size;
size += sizeof(buf);
char *tmp = (char*)realloc(data, size);
if (!tmp)
{
std::cout << "Oh no..";
break;
}
data = tmp;
memcpy(ptr, buf, sizeof(buf));
}
free(data);
ありがとう!