【发布时间】:2016-05-09 12:13:48
【问题描述】:
我遇到了释放动态内存的问题。我已经运行了其他人的示例代码,并且它有效。关键是我们使用相同的方式来释放内存,但我的没有用。它总是出现一个错误,
“CRT 检测到应用程序在堆缓冲区结束后写入内存。”
谁能帮我理解发生了什么?
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。你的其他指针也有类似的错误。 -
您的问题缺少上下文。
Stackptr是什么?ptr来自哪里?等等......发布代码的正确性完全取决于代码的其余部分。换句话说,可以说您的问题并未局限于发布的代码。