<分区>
我在这里粘贴了我的代码:http://pastebin.com/tPvRHrkW
使用 gcc
编译。
似乎错误发生是因为我定义了一个对于编译器来说太大的结构。我将结构体取出到另一个单个源文件中并进行了测试,这次没有发生错误。那么,为什么我会收到 SIGSEGV,结构的大小是否有任何限制?
标签 c
<分区>
我在这里粘贴了我的代码:http://pastebin.com/tPvRHrkW
使用 gcc
编译。
似乎错误发生是因为我定义了一个对于编译器来说太大的结构。我将结构体取出到另一个单个源文件中并进行了测试,这次没有发生错误。那么,为什么我会收到 SIGSEGV,结构的大小是否有任何限制?
最佳答案
结构的大小没有限制,问题在于您如何使用它。 MGraph
是巨大的结构类型,在两个地方,您以将其放置在堆栈上的方式使用它;一次作为函数的参数,一次作为局部变量。堆栈空间通常不允许增长到很大的比例。
我建议进行两处更改。首先,对这种类型的实例使用动态分配。其次,将指针作为参数传递给它,而不是实际数据。
关于c - 为什么我得到这个 SIGSEGV?我怎么知道一个结构可以获得多少内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14500682/