调用std :: vector :: empty()时内存访问冲突读取位置

时间:2015-04-06 12:53:58

标签: c++ vector stl

以下代码导致MSVC在调用方法vector :: empty时在stl向量类上抛出访问冲突读取位置。当我查看向量类中的数据时,它表示无法读取有关大小,容量,维度和“[]”变量的内存,并且原始视图是内存地址0xcdcdcdcd。

~Statement_Block(){
    if (!statements.empty()){//throws exception
        for (auto s : statements){
            if (s){
                delete s;
            }
        }
    }
}

1 个答案:

答案 0 :(得分:0)

问题解决了,另一个函数返回了动态分配的语句块或nullptr。由于它返回了一个nullptr,程序继续进行并释放所有内存。我假设所有指针都初始化为nullptr和0xcdcdcdcd。因此,当我测试以查看指针是否指向有效的东西时,当它等于其他东西时它正在针对nullptr测试它,并且它试图删除它并引发异常。