Tag: misra

为什么MISRA C指出指针副本可能导致内存exception?

MISRA C 2012指令4.12是“不应该使用dynamic内存分配”。 作为一个例子,文档提供了这个代码示例: char *p = (char *) malloc(10); char *q; free(p); q = p; /* Undefined behaviour – value of p is indeterminate */ 该文件指出: 虽然存储在指针中的值在释放之后保持不变,但在某些目标上,可能指向的存储器不再存在, 并且复制该指针的操作 可能导致内存exception 。 几乎所有的句子,我都可以,但最后。 由于p和q都被分配在堆栈上,指针副本如何导致内存exception?

如果使用else子句构造else,那么终止的好处是什么?

我们的组织有一个必要的编码规则(没有任何解释): 如果… else如果构造应该用else子句终止 例1: if ( x < 0 ) { x = 0; } /* else not needed */ 例2: if ( x < 0 ) { x = 0; } else if ( y < 0 ) { x = 3; } else /* this else clause is required, even if the */ […]