unique_ptr删除程序导致程序崩溃

时间:2011-10-14 21:51:31

标签: c++ memory destructor unique-ptr

在我关闭程序的运行时,我收到错误:“crt检测到应用程序在堆缓冲区结束后写入内存。”我通过析构函数执行程序执行到唯一ptr的删除操作,并在调用deleter函数时发生错误。我想提到的另一个问题是,由于某种原因,唯一ptr所在的类定义要求它具有公共拷贝构造函数。我尝试在另一个具有不同类和相同类的项目中复制这些问题,删除复制构造函数和析构函数并更改访问实验。我无法复制相同的问题 - 这两个项目之间的最大区别是问题是共享库,这可能是问题吗?必须定义复制构造函数虽然烦人且多余,但我并不十分关心,对此内存错误的任何推测或建议都将受到高度赞赏。

1 个答案:

答案 0 :(得分:3)

  

crt检测到应用程序在堆缓冲区结束后写入内存。

是的,当您调用delete时,此消息出现,但它说发现错误。没有造成一个。在代码的某处,你正在写一个数组的末尾,然后在删除期间,内存管理器在一个越界区域找到了“足迹”。

在每次访问数组之前,请输入:

assert(index<array_size);