代码在 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/