![]() |
| ||
| Dynamic Memory Allocation - offset pointers Hi all, I am just learning DMA, and am supposed to write 2 functions utilizing the offset technique, such that a 2-D array starts and ends the index of each dimension as the user specifies. matrix(): creates a 2D array of float type numbers, indexing from -n to n for each dimension. A proper pointer is to be returned so that after invocation of this function, a 2D array of float type numbers and the specified starting and ending indices can be used. free_matrix(): releases the memory allocated for the 2D array created by matrix(). I am using C, and use a UNIX-based compiler to run my program. Below is what I have: #include <stdio.h> I keep getting the error "Segmentation fault". What is wrong with my code? All those in blue were given in the question, so I can't change any of that. I followed the code to create the array closely with that given in my notes, which showed how to create a 2D array. On a similar matter, I was able to create a 1D array (with starting and ending indices as -n and n respectively), but had problems freeing the memory. My function to free the memory was void free_vector(float *x, int n) { free(x + n); } but I got the same "Segmentation Fault" error. What is wrong? Thank you. Regards, Rayne |
| ||
| Re: Dynamic Memory Allocation - offset pointers x = (float**) malloc(2 * n * sizeof(float*)); That's the problem I belive, why the 2? ,just put n like x = (float**) malloc(n * sizeof(float*)); Then try....... Also put in debug lines following each step,that way you can quickly find out where the problems are.... And this is really weird for (i = -n ; i <= n ; i++), I belive it's a mistake, it should be for (i = 0 ; i < n ; i++) |
| All times are GMT -4. The time now is 4:50 am. |
Forum system based on vBulletin Copyright ©2000 - 2009, Jelsoft Enterprises Ltd.
©2003 - 2009 DaniWeb® LLC