c代码内存存放细节

执行代码时,c/c++编译器会将代码存放到内存四个区域(当然,也可能是其中的两三个)。

首先,内存可以分为四个区域:栈区,堆区,常量区/全局区,代码区。

其次,根据一个例子来分析存放过程。

void main(){
    char buf[20]="aaaa";
    char buf2[] = "bbbb";
    char *p = "cccc";
    char *p2 = malloc(100);
    strcpy(p2,"dddd");
}

1>程序进入, 先将赋的值传入常量区


2>字符数组需要将常量区的值拷贝到栈区, 并且栈区需要开辟两个4字节的char变量p,p内存放常量区值得内存首地址


3>malloc会在堆区开辟空间,并且会将地址值赋值给栈区指针变量。


4> 最终,strcpy会将dddd,赋值给指针变量p2所指向的堆区空间。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值