内存分配

本文详细解析了计算机内存的不同区域,包括堆区与栈区的特点及使用方式,并解释了全局区、静态区、字符串常量区和代码区的作用。通过具体实例说明了char指针与数组在内存中的区别。
  1. 堆区,编译器自动分配释放,例如函数参数、局部变量。
  2. 栈区,手动分配释放,malloc/free,new/delete。
  3. 全局区、静态区,初始化的和未初始化的放在不同的地方。
  4. 字符串常量区
  5. 代码区
char * p1 = "123456"char p2[] = "123456" 的区别。
char * p1 = "123456" 直接mov全局变量的值。
mov dword ptr [ebp-10h],offset string "123456" (00422f7c)
char p2[] = "123456" 先mov到寄存器,再从寄存器mov到该位置。
mov eax,[string "123456" (0042201c)]
mov dword ptr [ebp-18h],eax
mov cx,word ptr [string "123456"+4 (00422020)]
mov word ptr [ebp-14h],cx
mov dl,byte ptr [string "123456"+6 (00422022)]
mov byte ptr [ebp-12h],dl

p1[0] = ‘a’是错误的,因为它实际上是全局区的常量指针。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值