内存
不同数据在不同区域,区域之间权限不同,段错误(segmentation fault)通常是权限超出了
函数内的局部变量:栈段( stack segment )
全局变量:
.data段:已初始化的全局变量
.bss段:未初始化的全局变量
大数据:从堆(heap)中申请空间,因为栈段的空间是很有限的,但是堆中的空间理论上和约等于总内存一样大
特点:堆中申请的空间使用如果不释放,里面的内容会保留,再次被申请时这些老旧的内容会对新的使用造成困扰
字符串:.rodata
字符串的本质:存储该字符串的首地址,且该首地址是常量
结合数组理解,字符串其实就是一个数组头
例:printf("%c","hello world"[1])
打印结果:e
可以把常量地址传给变量指针
char *p = "hello world"
数据被释放后,数据并不会消失,依然可以访问到
内存只会被建立联系和取消联系,不会被删除
本文介绍了内存的不同区域,包括栈段、数据段、bss段和堆,以及它们各自的特点和用途。强调了堆中大数据分配和释放的问题,以及字符串在.rodata段中的存储方式。同时指出,释放后的数据虽然不能立即访问,但依然存在于内存中,只有取消联系而不会被删除。

被折叠的 条评论
为什么被折叠?



