以下代码导致MSVC在调用方法vector :: empty时在stl向量类上抛出访问冲突读取位置。当我查看向量类中的数据时,它表示无法读取有关大小,容量,维度和“[]”变量的内存,并且原始视图是内存地址0xcdcdcdcd。
~Statement_Block(){
if (!statements.empty()){//throws exception
for (auto s : statements){
if (s){
delete s;
}
}
}
}
答案 0 :(得分:0)
问题解决了,另一个函数返回了动态分配的语句块或nullptr。由于它返回了一个nullptr,程序继续进行并释放所有内存。我假设所有指针都初始化为nullptr和0xcdcdcdcd。因此,当我测试以查看指针是否指向有效的东西时,当它等于其他东西时它正在针对nullptr测试它,并且它试图删除它并引发异常。