C++对删除错误

标签 c++ std-pair

<分区>

*更新: * 终于找到问题所在了。问题是这样的:

pair<int,int> *findPair(){
    pair<int,int> *t = new pair<int,int> [10];
    for(int i=0;i<11;i++) // error here
    {
        t[i].first =1;
        t[i].second =2;
    }
    return t;
}

int main() {
    pair<int, int> * tt = findPair();
    tt[1].first =8;
    delete [] tt; // error
    return 0;
}

存在段错误。 gcc 不会显示任何越界错误警告。在我的原始代码中,我使用 k 作为 pair 数组的索引。 k 在每个 while 循环中发生变化,并以超出范围的值结束。谢谢大家,对于造成的任何不便,我们深表歉意。

最佳答案

我将您的代码复制到 .cc 文件中(使用正确的 #include),这段代码工作正常。您确定这是段错误所在的位置吗?

如果您使用的是 linux,并且没有核心文件,请使用“ulimit -c unlimited”。 然后就可以在gdb中加载core文件,查看哪里出错了。

关于C++对删除错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5612776/

相关文章:

C++ : Copy Array of Structure and return the array of structure

c++ - 什么是 C++11 原子 API 等同于 `` `__asm__ volatile ("":::: "memory")`` `

c++ - char 变量的范围是多少? -127 到 127 还是 0 到 255?

c++ - 用对初始化 vector

c++ - 使用 sscanf 包括空格

c++ - 内置类型的 MSVC2008 C++ 放置新功能

c++ - 使用 std::map 和 std::pair 作为键并作为值列出

c++ - 如何将对整数视为分隔变量?

c++ - 如何在 C++ 类中初始化一对字符串、字符串的 vector ?

c++ - 检查对是否为空或未初始化