我正在尝试使用 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
我不明白我做错了什么。请帮忙。