C++ 在结构内声明变量时出现分段错误

C++ 在结构内声明变量时出现分段错误,c++,struct,segmentation-fault,C++,Struct,Segmentation Fault,我最近在开发应用程序时遇到了一个非常奇怪的错误。基本上,如果我将另一个变量添加到一个结构中,则在执行时会无明显原因地导致segfault。删除此变量可以立即解决问题。结构如下所示: typedef struct Note { char cNote; unsigned int uiDuration; unsigned int uiVelocity; }; 只要我添加一个 long lStartTime; 在结构中的任何位置都是变量,代码会像往常一样编译,但会抛出分段错误

我最近在开发应用程序时遇到了一个非常奇怪的错误。基本上,如果我将另一个变量添加到一个结构中,则在执行时会无明显原因地导致segfault。删除此变量可以立即解决问题。结构如下所示:

typedef struct Note {
    char cNote;
    unsigned int uiDuration;
    unsigned int uiVelocity;
};
只要我添加一个

long lStartTime;
在结构中的任何位置都是变量,代码会像往常一样编译,但会抛出分段错误。GDB的回溯在一些我甚至不用的晦涩的WIN方法中丢失了

有什么想法吗


谢谢

我看到了几种可能的解释:

  • 某个地方的某个东西假定
    struct
    具有一定的大小。改变大小会破坏东西
  • 您可能有某种内存错误,这是由于您更改内存中的内容布局而暴露出来的。尝试使用valgrind或Purify之类的工具
  • 您正在更改头文件中的
    struct
    ,但无法重建使用
    struct
    的所有源文件

  • 你在某处有未定义的行为。添加此成员只是使其更加明显。您是否做过任何与
    注释
    s有关的涉及手动内存管理或访问阵列的工作?开始看这里。给Joseph的评论添加一点内容-很可能有些代码在内存管理或数组访问方面做了一些不好的事情,但与
    注释
    没有任何关系。未定义行为的乐趣之一是,当编辑完全不相关的代码时,症状可能会改变。除了valgrind,还有电子围栏和(仅限Windows)应用程序验证程序。谢谢大家的帮助,但我已经解决了。原来我在另一个类中静态分配了一个由
    Note
    s组成的大型数组。我应该动态地这样做,因为程序的堆栈不够大,无法容纳如此多的
    Note
    实例。这很讽刺,因为向结构添加变量会导致堆栈溢出。只是应该看看网站的标题,哈哈。