【发布时间】:2020-10-29 11:11:25
【问题描述】:
我正在尝试为 trace_t 结构数组分配/重新分配内存。
typedef struct {
step_t *head; // pointer to the step in the head of the trace
step_t *tail; // pointer to the step in the tail of the trace
} trace_t;
代码运行良好(我认为),但我的编译器输出了“取消引用未定义的指针值”警告。这是什么意思?在导致错误的行上,我只是试图将 trace_t 数组中每个 trace_t 的头和尾指针设置为 NULL
trace_t**
make_trace_array(trace_t** trace_arr, int request, int limit) {
int i;
if (request==MALLOC) {
trace_arr = (trace_t**)malloc(limit*sizeof(*trace_arr));
assert(trace_arr!=NULL);
for (i=0; i<limit; i++) {
trace_arr[i]->head = trace_arr[i]->tail = NULL; <------------- warning
}
return trace_arr;
} else if (request==REALLOC) {
trace_arr = (trace_t**)realloc((trace_t**)trace_arr, (limit*2)*sizeof(*trace_arr));
assert(trace_arr!=NULL);
// may b bug
for (i=limit; i<limit*2; i++) {
trace_arr[i]->head = trace_arr[i]->tail = NULL; <------------- warning
}
return trace_arr;
}
printf("Invalid request");
return NULL;
}
【问题讨论】:
-
你
malloc一个初始化指针数组然后尝试使用这些指针。 -
@user3121023 谢谢!这摆脱了警告。我把数组复杂化了
标签: arrays c pointers malloc realloc