在struct中声明变量时出现分段错误

时间:2013-04-01 18:08:30

标签: c++ struct segmentation-fault

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

typedef struct Note {
    char cNote;
    unsigned int uiDuration;
    unsigned int uiVelocity;
};

我一添加

long lStartTime;

变量在结构中的任何地方,代码像往常一样编译但会引发分段错误。在我甚至不使用的一些模糊的WIN方法中,GDB的回溯丢失了。

有什么想法吗?

谢谢!

1 个答案:

答案 0 :(得分:2)

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

  1. 某处某处假定struct具有一定的大小。改变大小会破坏事物。
  2. 您可能会遇到某种类型的内存错误,这会通过更改内存中的内容布局来实现。尝试像valgrind或Purify这样的工具。
  3. 您正在更改标头文件中的struct,但无法重建使用struct的所有源文件。