在逐步調試時出現該錯誤
這個信號產生的機制是由於程序訪問了沒有權限訪問的內存,比如內存越界,線程棧溢出等等。指針未初始化或越界,訪問到了未分配地址的空間。
代碼:
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;