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

问题描述:

我有简单的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开始定义数组并调用fooInitGL

double p[1000]; 
foo(p); 

我在行

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

错误在哪里?

+0

向我们展示实际的代码 - 没有它,我们只是猜测。 – 2010-10-05 13:40:14

+0

提出的代码应该可以正常工作。我会指责你的代码的另一部分的内存损坏,因为它只发生在堆栈上。 – jweyrich 2010-10-05 13:44:15

+0

很抱歉,我创建了错误并更新了我的问题:) – Kirill 2010-10-05 14:13:39

Silver_Ghost的编辑问题,进入这里,所以这个问题不显示为具有0-2答案:

非常非常愚蠢的错误:d
最初我已经writen函数:

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 

三维空间。当然还有 分割的错,因为我必须 申报列数(我在Kernighan和 里奇书阅读 31分钟前:)当我修复功能 声明

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循环,其中我忘了改变 10000到1000.现在一切正常。