#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#include<string.h>
void allocate_double_2darray(int ip_flag, double **ip_array, int num_row, int num_col);
int main(void)
{
int num_row, num_col;
double **temp_array;
num_row = 4;
num_col = 2;
allocate_double_2darray(0, temp_array, num_row, num_col); //Allocate memory
allocate_double_2darray(1, temp_array, num_row, num_col); //initialize
allocate_double_2darray(2, temp_array, num_row, num_col); //Free Memory
return 0;
}
void allocate_double_2darray(int ip_flag, double **ip_array, int num_row, int num_col)
{
int i_loop, j_loop;
if(ip_flag == 0) //allocate (free) memeory from array
{ ip_array = malloc(sizeof(double *) * num_row);
for(i_loop = 0; i_loop < num_row; i_loop++)
ip_array[i_loop] = malloc(sizeof(double) * num_col);
}
if(ip_flag == 1) //initialize to zero
{
for(i_loop = 0; i_loop < num_row; i_loop++)
for(j_loop = 0; j_loop < num_col; j_loop++)
ip_array[i][j] = 0.0;
}
if(ip_flag == 2) //deallocate (free) memeory from array
{
for(i_loop = 0; i_loop < num_row; i_loop++)
free(ip_array[i_loop]);
free(ip_array);
}
}
これは、メモリを割り当てて 2 次元配列を作成する単純な関数です。正常にコンパイルされます。ただし、実行すると、セグメンテーション違反エラーが発生します。ここで私が間違っていることを見つけるのを手伝ってくれる人はいますか?