我在一个看似简单的代码中有一个非常奇怪的问题(出于调试目的,我现在将其简化为几乎这个代码):
class Buf {
Frame ** frames;
Buf(int a);
int a;
long b, c, d
}
Buf::Buf(int size){
a = size;
frames = new Frame*[size];
for (int f = 0; f < size; ++f){
frames[f] = new Frame;
}
b = c = d = 5; // (***)
}
Frame类非常简单和小,我在其构造函数/析构函数中禁用了任何内存操作。
我在呼叫main
:
Buf* buf = new Buf(50);
偶尔它工作正常,但大多数时候它工作正常,直到(***)行,然后当我通过这行时,我可以在调试器中看到,* frame,frame [1]等等等于5(!)或我在作业中输入的任何其他数字。
如果我尝试从命令行运行它,它会告诉我有关内存访问不良的信息。
正如我所说,我简化了我的程序是非常琐碎的,仍然找不到错误。
任何建议/帮助都会很棒!
更新:
我将代码复制到另一台计算机(具有类似的配置),我无法在那里重现问题。在原始计算机上,我可以重现问题,无论是从XCode还是Eclipse /命令行运行项目(代码的不同副本)。
答案 0 :(得分:0)
frames = new Frames*[size];
这是错误的,“frames”变量被定义为指向Frame
的指针,而不是指向Frames
的指针。