c - C中的每个指针都应该分配在堆上吗?
问题描述
是否需要或建议将 C 中的每个指针都分配在堆上?例如,以下代码是否可能会产生分段错误?
#include <stdio.h>
int main(void) {
int* p;
*p = 16;
printf("Pointer p = %d\n", *p);
return 0;
}
解决方案
此代码可能会出现段错误,因为p
未初始化,因此未指向有效地址。
指针不一定必须指向堆内存。它只需要指向一个有效的对象。例如:
int x = 4;
int *p = &x;
*p = 5;
printf("x=%d\n", x); // prints 5
推荐阅读
- swift - 从 RayCasting 获取平面尺寸
- neo4j - 如何根据 Neo4j 中的最短日期等条件查找相关项目?
- reactjs - 使用 react-transition-group 在不触发动画的情况下更改项目的键
- sql - 选择最小日期 1 年内的最后一个日期
- python - 如何在熊猫中过滤日期时间列的小时间隔(仅小时)
- python - 如何并行运行多个 celery 任务?
- php - VCalendar 和 PHP 发送会议请求,但电子邮件未请求回复
- angular - Primeng的p-fileUpload中没有运行onUpload方法
- bash - 重击。在调用堆栈中插入函数调用
- angular - 使用 Angular 8,如何获取对在页面其余部分加载几秒钟后加载的 DOM 元素的引用?