我发现很多'指针变为空'的问题,但很难将问题的答案应用到我的问题
我有3个嵌套结构。 Struct A
应该包含一个struct B
数组,它包含一个结构C
,它本身应包含一个int
数组:
typedef struct {
int32_t *data;
uint16_t nData;
uint16_t dataOffset;
} Window;
typdef struct {
Window *window;
const char *datasetPath;
} Dataset
typedef struct {
char *id;
uint8_t count;
Dataset *datasets;
} DatasetGroup;
我对结构体有一个new
函数:
int8_t dataset_new(Dataset *ds, const char *datasetPath, uint16_t winSize){
ds->datasetPath = datasetPath;
ds->window = malloc(sizeof(*(ds->window));
ds->window->data = malloc(sizeof(int32_t) * (winSize));
return 0;
int8_t datasetgroup_new(DatasetGroup *dg, char *id){
dg->id = id;
dg->count = 0;
dg->datasets = malloc(sizeof(*(dg->datasets)) * 255);
}
我有一个add
函数可以将Dataset
添加到DatasetGroup
:
int8_t datasetgroup_add(DatasetGroup *dg, const char *filePath, uint16_t winSize){
// Create the dataset
Dataset ds;
dataset_new(&ds, filePath, winSize);
// Add the dataset to the dataset array
dg->datasets[dg->count] = ds;
dg->count++;
return 0;
}
然后我遍历数据集以填充数据,执行以下操作:
for (i = 0 ; i < datasetCount ; i++){
Dataset *ds = &(dg->datasets[i])
始终在第二次交互时,data
数组变为空指针:
data = ds-&gt; window-&gt; data
我明白我做错了传递指针(?)但是我不确定我做错了什么......
答案 0 :(得分:1)
看起来很好。所以检查代码的另一部分。您可以逐行调试代码,以便了解创建此错误的段。