文字常量区与栈区

本文详细介绍了程序中内存的分配,包括栈区与堆区的特性,以及局部变量与动态分配的区别。同时,通过实例分析了字符串在内存中的存储方式,解释了为何`p1 == p2`和`str1 != str2`的现象。
摘要由CSDN通过智能技术生成

 

今天一大早起来,朋友就给我发给了下面一个题目,要我解释下,答案我是想出来了,可是就是解释不清楚。。。

 

首先要解决这个问题就必须了解程序在内存的分配:

关于堆与栈的

栈(stack):是自动分配变量,以及函数调用所使用的一些空间(所谓的局部变量),地址由高向低减少;
堆(heap):由malloc,new等分配的空间的地址,地址由低向高增长
自己所编写的代码:
#include <iostream>
using namespace std;
void main() 

int a;
int b;
int *p1;
int *p2;
cout < <&a < <endl < <&b < <endl < <&p1 < <endl < <&p2 < <endl < <endl;
//结果显示:0012FF7C,0012FF78,0012FF74,0012FF70;可见,栈中的地址是减少的
int *p3=new int[1];
int *p4=new int[1];
cout < <p3 < <endl < <p4 < <endl;
//结果显示:003907A8,003907E0;可见,堆中地址是增加的


  有一点应该注意:频繁使用heap

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值