2010-10-05 8 views
4

J'ai un simple programme OpenGL C (à partir de NeHe lesson 2). Il y a la fonction d'initialisation InitGL.
et j'ai fonction foo dans ma bibliothèque statique:Erreur de segmentation lors de l'appel d'une fonction de bibliothèque statique

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

Quand je Define Array double au début de InitGL:

double arr[1000]; 

et le modifier en InitGL tout fonctionne très bien.

Quand j'allouer de la mémoire pour ce tableau dynamique et appelle foo de InitGL tout fonctionne bien aussi:

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

Mais quand je Define Array au début de InitGL et appelle foo de InitGL:

double p[1000]; 
foo(p); 

je reçois défaut de segmentation à la ligne

p[0] = 1.0; 

Où est l'erreur?

+0

Montrez-nous le code actuel - sans cela, nous ne faisons que deviner. –

+0

Le code présenté devrait fonctionner correctement. Je blâmerais la corruption de la mémoire d'une autre partie de votre code, car elle ne se produit que lorsqu'elle est mise en pile. – jweyrich

+0

Big désolé, j'ai fondé l'erreur et mis à jour ma question :) – Kirill

Répondre

1

question de Silver_Ghost édité, entré ici, donc la question ne se présente pas comme ayant 0 réponses:

erreur très stupide: D
Dans un premier temps j'ai écrit une fonction:

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 

Espace 3D. Bien sûr, il y avait erreur de segmentation parce que je dois déclarer le nombre de colonnes (je l'ai lu il y a 30 minutes Kernighan et livre Ritchie :) Quand je corriger la fonction déclaration

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 

un pour-boucle où J'ai oublié le changement 10000 à 1000. Maintenant tout fonctionne bien.