静态内存;堆内存;函数局部栈内存 demo程序(摘自C++程序员求职关键路径)

 

#include "iostream"
using namespace std;

char* get_memory1()
{
 char p[]="hello";//p这个数组变量的右值在函数局部栈上
 return p;//returning address of local variable or temporary
}

char* get_memory2()
{
 char *p="hello";//p这个指针指向的是一个静态存储区
 return p;//正常
}

char* get_memory3()
{
 char *p=(char*)malloc(sizeof("hello"));//p这个指针指向的是一个堆内存
 strcpy(p,"hello");
 return p;//正常
}

void main()
{
 char *p1=get_memory1();
 cout<<p1<<endl;
 
 char *p2=get_memory2();
 cout<<p2<<endl;

 char *p3=get_memory3();
 cout<<p3<<endl;

 if(p2==p3)
  cout<<"两个相同的字符串常量在静态存储器只占一份位置空间"<<endl;
 else
  cout<<"两个相同的字符串常量在静态存储器占两份不同的位置空间"<<endl;
 
}

 

 

 

另外:最近简单看了下C和指针中关于变量的讲解。弄清楚一个变量的作用域;链接属性;存储类型;是非常重要的

程序的编译生成目标文件; 然后链接成可执行文件;然后程序进入宿主机执行。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值