在main函数开始之前,分段错误11(可能在struct中)

时间:2016-11-27 21:34:43

标签: c struct segmentation-fault

我想知道我的代码中的错误在哪里。我刚刚开始学习C而且我只需要指针和数组,所以我不知道错误在哪里。问题似乎在于我使用struct创建自己的数据类型的部分,因为我运行程序时,我所放置的调试文本都没有显示在控制台中。我已经在互联网上寻找答案,但却找不到任何答案。任何帮助将不胜感激。

    ...

    def instance_mthd2(self, val):
        print("Instance method, with class access via `self`:", self.__class__.weight*val)
    ...

a.instance_mthd2(2)
# Instance method, with class access via `self`: 400

1 个答案:

答案 0 :(得分:1)

TMATRIX结构中,声明一个2000x2000的整数数组。

2000*2000*4是16兆字节。你正在使用一个自动变量约。该大小(如果sizeof(int)==4,但如果sizeof(int)==8可能是双倍。)

因此,在您到达第一条指令之前,您可能会遇到堆栈溢出,当编译器生成的代码尝试为您的变量分配足够的堆栈空间时,典型的堆栈大小会小于该值。

修正:

  • 增加堆栈(链接器选项)
  • 使用全局变量(在matrix程序之外移动main
  • 使用malloc分配您的表格,而不是静态分配(保持多维方面,定义int (*grid)[MAX_size];并在MAX_size * sizeof *grid上制作malloc)