MISRA C 2012指令4.12是"不应使用动态内存分配".
例如,该文档提供了以下代码示例:
char *p = (char *) malloc(10);
char *q;
free(p);
q = p; /* Undefined behaviour - value of p is indeterminate */
Run Code Online (Sandbox Code Playgroud)
该文件指出:
尽管在调用free之后存储在指针中的值没有改变,但是在某些目标上,它所指向的内存不再存在,并且复制该指针的行为 可能导致内存异常.
几乎所有的句子我都很好,但结束了.由于p和q都在堆栈上分配,指针的副本如何导致内存异常?