iam*_*sgt 1 c++ free pointers glibc
我正在为家庭作业写一个回溯问题,除了我delete[]的最后,所有代码都有效.
/*Assg4.cc*/
int main()
{
//removed irrelevant code - see pastebin links if needed
void *data = &datavector;
bool finished = false;
bool* continuance = &finished;
int *a = new int[n+1];
for(int i=0; i<n; i++)
{
a[i] = NULL;
}
delete []a;
delete continuance;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
***glibc检测到***./Assg4:free():无效指针:0xbfc7098f***
该函数在某些时候backtrack()仅填充数组的内容a[],它不会以任何方式删除,扩展或收缩数组.我知道问题在于最后的删除,因为当我将它们注释掉时,我没有得到任何错误(并且所有计算的结果都是正确的).我究竟做错了什么?
Pastebin完整文件:
很确定你的错误实际上在这里:
delete continuance;
Run Code Online (Sandbox Code Playgroud)
你试图删除在堆栈上分配的东西,因为continuance指向finished堆栈的分配(没有调用new).堆栈上的项目将在超出范围时自动销毁,因此您不必担心删除continuance.
请参阅:堆栈和堆的内容和位置
| 归档时间: |
|
| 查看次数: |
110 次 |
| 最近记录: |