声明向量时出现神秘的 malloc 内存分配错误
Mysterious malloc memory allocation error when declaring vector
我对这个错误感到非常困惑,希望你能帮助我!我有一个类,它有一个结构向量(结构称为粒子)。我只是在编写一个 getter,它返回结构中某个字段的向量;一次用于名为 X 的字段,然后再次用于名为 V 的字段:
vector<double> x = s.getx();
vector<double> v = s.getv();
出于某种原因,getx 可以工作,但 getv 不起作用:它给了我"malloc():内存损坏:"。
以下是 getx 和 getv 类:
vector<double> getx() {
vector<double> ret(number-2);
for(int i = 1; i < number; i++) {
ret[i-1] = masses[i].x;
}
return ret;
}
vector<double> getv() {
vector<double> ret(number-2);
for(int i = 1; i < number; i++) {
ret[i-1] = masses[i].v;
}
return ret;
}
错误发生在以下行:
vector<double> ret(number-2);
在盖特夫。
我如此困惑的原因是这两种方法本质上是相同的!当我用常量替换(数字-2)时,我什至会遇到同样的错误,例如 4。它根本无法分配内存!
我希望你能看到我做错了什么...
非常感谢您的帮助,愿你安好夜光灯
内存损坏错误很少出现在它们发生的地方;当某些东西碰到损坏的内存时,它们会出现。在这种情况下,这两个函数都在写入不属于它们的内存。每个元素都使用number - 2
元素初始化一个vector
,然后写入不存在的vector[number - 1]
。
相关文章:
- malloc() 可能出现内存泄漏
- 如何在 malloc 内存中初始化非 POD 数据
- 如何通过 malloc 为队列数组分配内存?
- 正在调试 malloc():新内存损坏
- C++程序错误:malloc():内存损坏
- 是否可以使用 malloc 为类对象分配内存?
- 如何使用 Malloc 调试来检查本机内存泄漏?
- 如何使用 "new" 而不是 malloc 分配内存?
- 内存碎片会减慢新/malloc
- Visual C 运行时:Malloc将指针返回到已经使用的内存(包含实际字符串)
- malloc()内存损坏仅通过为特定数量编写int数组
- 从 JNI 调用的 DLL 从哪里获取其内存以进行分配,例如 Malloc
- C++自动内存 malloc 和免费覆盖问题
- 瓦尔格林德说malloc内存损坏,没有使用malloc
- Malloc内存检查是否连续
- 声明向量时出现神秘的 malloc 内存分配错误
- 为什么<list>元素会在使用 malloc() 内存的对象中导致分割错误
- 奇怪的malloc:内存损坏
- malloc'd 内存重叠由 std::make_shared 创建的对象
- Malloc():内存损坏(快速)c++