小编tot*_*oto的帖子

为什么MISRA C声明指针的副本可能导致内存异常?

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都在堆栈上分配,指针的副本如何导致内存异常?

c pointers memory-management misra

37
推荐指数
2
解决办法
2683
查看次数

标签 统计

c ×1

memory-management ×1

misra ×1

pointers ×1