我有一个动态内存释放的问题。我运行了别人的示例代码,它可以正常工作。问题在于,我们使用了同样的方式释放内存,但我的代码没有正常工作。总是出现以下错误:
"CRT detected that the application wrote to memory after end of heap buffer."
是否有人能帮我理解发生了什么?
void pop(Stackptr *ptr){
Stackptr tmp = NULL;
if(*ptr == NULL){
printf("there is no element\n");
}else{
tmp = *ptr;
*ptr= (*ptr)->nextptr;
free(tmp);
}
}
Stackptr tmp
应该为Stackptr *tmp
,而*ptr == NULL
应该为ptr == NULL
。你的其他指针也存在类似的错误。 - MargedStackptr
是什么?ptr
从哪里来?等等...发布的代码的正确性完全取决于其余的代码。换句话说,可以说你的问题不仅限于发布的代码。 - skyking