【发布时间】:2010-10-05 13:20:45
【问题描述】:
我有简单的 OpenGL C 程序(来自NeHe lesson 2)。有初始化函数InitGL。
我的静态库中有函数foo:
void foo(double *p)
{
p[0] = 1.0;
}
当我在InitGL 的开头定义双精度数组时:
double arr[1000];
并在InitGL 中修改它一切正常。
当我为这个数组动态分配内存并从InitGL 调用foo 时也一切正常:
double *p = (double *)malloc(1000 * sizeof(double));
foo(p);
但是当我在InitGL 的开头定义数组并从InitGL 调用foo 时:
double p[1000];
foo(p);
我在线路上遇到分段错误
p[0] = 1.0;
哪里出错了?
【问题讨论】:
-
向我们展示实际代码——没有它,我们只是在猜测。
-
提供的代码应该可以正常工作。我会从您的代码的另一部分归咎于内存损坏,因为它仅在放入堆栈时发生。
-
很抱歉,我发现错误并更新了我的问题:)
-
您应该将您的解决方案作为答案发布,然后接受它,因此这不会显示为未回答的问题。
-
@Software,我刚刚编辑了问题并将他们的“答案”发布为 wiki 答案,这在这种情况下似乎是合理的。
标签: c segmentation-fault static-libraries