c++中的内存使用和重写
Memory usage and overwrites in c++
我正在编写一大块代码。作为我的主类构造函数的一部分,我声明了大量的向量,这些向量在某个点或另一个点上被填充(都是双精度的)。直到不久前,代码还运行得很好,但在我添加了另一个doubles向量后,由于某种原因,一个完全无关的变量(决定特定"运行"是否成功的变量)正在更改。我没有添加任何更改此成功变量的行,当我打印出它的值时(成功运行会导致变量为零),它每次都会变为一个大整数,但每次运行都会给出不同的值。我有一种感觉,我在内存分配方面做错了什么,但我不知道具体是什么!欢迎任何建议,干杯Jack
更新
class MyClass {
std::vector <std::vector<HLV> > qChains;
std::vector <std::vector<HLV> > VertexChains;
std::vector <std::vector<double> > Virtuals;
std::vector <double> VProducts;
std::vector <double> QProducts;
std::vector <double> StrongCouplings;
int EventStatus
}
然后在"MyClass"的另一种方法中,我有一个快速的if循环来检查事件是否正常:
if (GetEventStatus() != 0) cout << "ERROR!! " << GetEventStatus() << endl;
自从我添加了关于StrongCouplings的行之后,状态一直是返回随机的大整数。然而,我注意到,如果我在各个地方检查EventStatus的值的过程中放置一系列打印语句,问题就会消失!
尝试添加char buf[128];在变量改变其值之前(如果有帮助的话),这将意味着以前的一些变量会覆盖您的变量。它可能是由ODR冲突或C数组的错误使用引起的(如果在数组结束后写入)
相关文章:
- 如何创建一个CMake变量,除非显式重写,否则使用默认值
- 将字符串存储在c++中的稳定内存中
- C++ 指针的内存地址和指向数组的内存地址如何相同?
- Win32编译器选项和内存分配
- 当vector是tje全局变量时,c++中vector的内存管理
- 带内存和隔离功能的SQLite
- 是否可以通过C++扩展强制多个python进程共享同一内存
- 将OpenCV C++重写为EmguCV C#-如何使用指针
- 迭代时从向量和内存中删除对象
- 在C++中打印指向不同基元数据类型的指针的内存地址
- 这个指针和内存代码打印是什么?我不知道是打印垃圾还是如何打印我需要的值
- 多个文件的内存分配错误"在抛出 'std :: bad_alloc' what (): std :: bad_alloc 的实例后终止调用" [C++]
- 为什么示例代码访问IUnknown中已删除的内存
- 正在重写MSVC++中的内存分配器
- c++中的内存使用和重写
- mmap被破坏,是malloc重写内存中的元素
- 重写数据时的内存泄漏(c++)
- 矢量函数"push_back"不断将值重写到内存中的同一插槽
- c++是delete操作符重写内存
- 在c++中重写+操作符时可视地分配内存