进程的内存空间

 1代码区/段:存储函数的代码,函数指针就是函数在代码区的地址(首地址)。
 2全局区:   初始化的全局变量,static变量,读写都可以。
 3 BSS区:   未初始化的全局区。BSS段在main()执行之前会自动清零。
 4 堆区 :   也叫自由区,程序员全权掌控堆区。容易引发内存泄漏malloc(),free().
 5 栈区 :   系统自动管理,函数的参数,局部变量(非static).
 6 只读常量区:字符串""的字面值,const修饰的全局常量,在只读常量区。不能修改。有些资料把常量区和代码区放一起。


#include<stdlib.h>

int i1 = 1; //全局
int i2; //BSS
static int i3 = 3;//全局
const int i4 = 4;//只读常量
static const int i44 = 44;//只读常量

void fa(int i5) //栈区
{
	int i6 = 6;  //栈区
	static int i7 = 7; //全局区
	const int i8 = 8;  //栈区,虽然为const,本质是可以读写
	int* pi = malloc(4); //堆
	char *s1 = "abc";  //s1在栈区,指向只读常量区
	char s2[] = "abc"; //栈区开辟空间,s2为首地址
}

段错误:
1 使用了没有映射的虚拟地址,比如NULL
2 对内存执行了没有权限的操作,比如修改只读区。

char *s1 = "abc"; //s1在只读区
*s1 = 'e';   //修改只读区引发运行时段错误

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值