在逐步调试时出现该错误
这个信号产生的机制是由于程序访问了没有权限访问的内存,比如内存越界,线程栈溢出等等。指针未初始化或越界,访问到了未分配地址的空间。
代码:
struct its_cpm_perceived_object_container *obj;
obj = util_calloc(1, sizeof(*obj));
obj->y_speed.confidence->value = 25;
这里使用了双重指针,但我只为第一层指针分配了动态内存,第二层指针未分配内存,导致调用第二层指针的时候访问了没有权限的内存。
多重指针同层各指针内存是相邻的,而每个指针指向的下一层地址却并不是相邻的,修改后的代码:
struct its_cpm_perceived_object_container *obj;
obj = util_calloc(1, sizeof(*obj));
obj->y_speed.confidence = util_calloc(1, sizeof(*obj->y_speed.confidence));
obj->y_speed.confidence->value = 25;