c++ - vector<int*>.push_back() 正在覆盖 front() 指向的值

标签 c++ heap-memory stdvector overwrite

代码在 pastebin 上:http://pastebin.com/UknqKvMq

因此,我正在排列 0、1、2、3、4、5、6、7、8、9 的所有可能排列(即形成 10 位数字)。我通过调用将每个排列存储在堆上

new int[10]

我将返回的指针推到一个

static vector<int*>

现在,当我将指针推到 vector 上时,第一项指向的数据正在被修改(可能还有 vector 指向的所有其他项)。我在代码中有许多打印语句显示了这一点,调用 sleep() 来减慢进程。为什么会这样?

最佳答案

您调用 Permute,它将指针 inputCopy->arrangement 插入您的静态 vector 。然后立即将其删除。这意味着您的 vector 包含悬挂指针。

关于c++ - vector<int*>.push_back() 正在覆盖 front() 指向的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19344323/

相关文章:

c++ - 在 C++ std::vector 和 C 数组之间转换而不复制

c++ - 为什么我们不能改变 std::vector 的数据指针?

c++ - 如何使用 Boost 实现测试套件和用例的组织?

c++ - 在数组 C++ 中搜索字符串索引

c++ - "static_cast<void>"在宏中有什么用?

c++ - 消息包头的设计模式

c++ - 后备列表与低碎片堆

c++ - tcmalloc ReleaseFreeMemory() 没有正确释放内存

c - OpenCl 中的结构具有大量内存地址

c++ - 如何创建一个可以二进制读/写大块的 std::vector-like 类?