c - Pointer passing to function -


when use fragment of code, instead of direct calling malloc() init(), error message appears under windows 8. standard message "program ... stopped working".

some of programs generate same under windows 8. under linux fine. win8's c language not ansi compatible?

file *dumpfile; double *cx; void init_var(double *ptr) {     ptr = malloc (l*sizeof(double));     (i=0; i<l; i++) ptr[i] = (double) i; }  void init() { //    cx = malloc (l*sizeof(double)); //    (i=0; i<l; i++) cx[i] = i;     init_var(cx);     dumpfile = fopen( "dump.txt", "w" ); } 

upd. aaaaargh. now.

you re-assigning functiona argument inside function, doesn't change argument in caller's context. because c call value.

you must pass init_var() address of cx in order change it:

void init_var(double **ptr) {   *ptr = malloc(l * sizeof **ptr);   /* ... */ }  void init(void) {   init_var(&cx); } 

Comments

Popular posts from this blog

windows - Single EXE to Install Python Standalone Executable for Easy Distribution -

c# - Access objects in UserControl from MainWindow in WPF -

javascript - How to name a jQuery function to make a browser's back button work? -