您的位置:首页 > 编程语言 > C语言/C++

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

2011-08-09 15:39 447 查看
#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和指针中关于变量的讲解。弄清楚一个变量的作用域;链接属性;存储类型;是非常重要的

程序的编译生成目标文件; 然后链接成可执行文件;然后程序进入宿主机执行。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐