作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
考虑以下三个C函数:
[P1]
int *g(void) {
int x = 10;
return (&x);
}
int *g(void) {
int *px;
*px = 10;
return px;
}
int *g(void) {
int *px;
px = (int *)malloc(sizeof(int));
*px = 10;
return px;
}
malloc
将返回空指针,P3甚至可能失败。但是,无论我在Internet上什么地方看到,到处都有它提到的选项
c 。我想听听您对此的所有意见!
最佳答案
假设问题询问可能是引起问题的原因,正确答案将是c)P1和P2。
P1返回局部变量的地址。如果该地址被取消引用(甚至读取),它将调用undefined behavior。
P2取消引用未初始化的指针,这也是未定义的行为。
P3使用malloc
分配内存,在该内存位置存储一个值,然后将指针返回到分配的内存。的确,如果malloc
失败,这可能会导致问题,但与完全未定义的行为相比,这更可能是一个问题。
关于c - 正确的选择是什么?我引用的源代码中提到了它的C。但我觉得它是,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62050716/
我是一名优秀的程序员,十分优秀!