init() 関数で構造体の値を初期化しようとしています。良さそうに見えますが、init() 関数の実行が終了すると、どういうわけか割り当てられません。さらに、 init() 関数内ではすべて問題ありませんが、返されると割り当てられた値が失われます。数時間を費やしましたが、何が起こっているのかわかりません。
ここに私のコードと構造体があります:
typedef struct svm_data
{
int num_points;
int num_dimensions;
double* training_set;
double* descision_set;
} svm_data_t;
void init()
{
init_data(&test_data);
init_data(&check_data);
printf("in init: test_data->num_dimensions: %d\n", test_data.num_dimensions);
printf("in init: check_data->num_dimensions: %d\n", check_data.num_dimensions);
set_correct_descision_set(&check_data);
}
void init_svm_data(svm_data_t* data)
{
int np = 3;
int nd = 3;
data = (void*)malloc(sizeof(svm_data_t));
data->num_points = np;
data->num_dimensions = nd;
data->training_set = (void*)malloc(sizeof(double)*(NUM_DIMENSIONS+1));
data->descision_set = (void*)malloc(sizeof(double)*(NUM_DIMENSIONS+1));
printf("test_data->num_dimensions: %d\n", data->num_dimensions);
}
これは以下を出力します:
test_data->num_dimensions: 3
test_data->num_dimensions: 3
in init: test_data->num_dimensions: 0
in init: check_data->num_dimensions: 0
でも印刷したい
test_data->num_dimensions: 3
test_data->num_dimensions: 3
in init: test_data->num_dimensions: 3
in init: check_data->num_dimensions: 3
私が間違っていることを理解できません。助けてください。