调用静态库函数时出现分段错误

时间:2010-10-05 13:20:46

标签: c segmentation-fault static-libraries

我有简单的OpenGL C程序(来自NeHe lesson 2)。有初始化函数InitGL 我的静态库中有函数foo

void foo(double *p)
{
    p[0] = 1.0;
}

当我在InitGL的开头定义double数组时:

double arr[1000];

并在InitGL中修改它一切正常。

当我为此数组动态分配内存并从foo调用InitGL时,一切正常:

double *p = (double *)malloc(1000 * sizeof(double));
foo(p);

但是当我在InitGL开始时定义数组并从foo调用InitGL时:

double p[1000];
foo(p);

我在第

行得到分段错误
p[0] = 1.0;

错误在哪里?

1 个答案:

答案 0 :(得分:1)

Silver_Ghost的编辑问题,在这里输入,所以问题没有显示为有0个答案:

  

非常愚蠢的错误:D
  最初我写了一个函数:

void cg_random_points(double **dest, int n, 
          double xl, double xr,
          double yl, double yr,
          double zl, double zr) for generate set of random points in
     

3D空间。当然有   分段错误,因为我必须   声明列数(我读了它   30分钟前在Kernighan和   里奇书:)当我修复功能   声明

void cg_random_points(double (*dest)[3], int n, 
          double xl, double xr,
          double yl, double yr,
          double zl, double zr) segmetation fault continued throw by
     

一个for-loop,我忘了改变   10000到1000.现在一切正常。