30-10-2010, 12:58
|
|
|
חבר מתאריך: 09.03.03
הודעות: 246
|
|
עכשיו ניסיתי להכניס לקוד שלך:
וקיבלתי את אותו הפלא כמו קודם:
Enter the matrix
(((
matrix_dimensions is 3
Segmentation fault
* אגב לגבי השורה: "//of course you need to free all the allocated memory before exiting"
לפי מה שאני מבין אני צריך לשחרר את הזכרון אחרי זה, פשוט לכתוב FREE ובסוגריים את המצביע?
מה יקרה אם אני לא משחרר אותו?
קוד:
#include <stdlib.h>
int** createArray (int nrows,int ncolumns);
int main () {
int **array;
int matrix_dimensions=0;
int i=0;
char matrix[100];
printf ("Enter the matrix\n");
gets (matrix);
for (i=0;i<strlen(matrix);i++)
{
if (matrix[i]=='(') matrix_dimensions++;
}
printf("matrix_dimensions is %d\n",matrix_dimensions);
int **arr=createArray (matrix_dimensions,matrix_dimensions);
arr[5][3]=2;
printf ("%d",arr[5][3]);
//of course you need to free all the allocated memory before exiting
return 0;
}
int** createArray (int nrows,int ncolumns) {
int i=0;
int **array = malloc(nrows * sizeof(int *));
for(i = 0; i < nrows; i++) {
array[i] = malloc(ncolumns * sizeof(int));
}
return array;
}
|