这段代码有什么问题?每次都会崩溃。
有时它是一个失败的断言“_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);
谢谢!