程序代码:
/*--------------------------------------------------------
你这段程序编译、连接成 .exe程序后,运行它,操作系统会把它加载到内存,并在内存中给它分配
相应的 代码空间、数据空间、堆栈空间(汇编常这样称呼)。
数据空间就包括了此程序中的 12、122、字符串常量(也就是此程序中 “” 包括的汉字 标点符号等);
堆栈空间就包括了此程序中的局部变量。比如你定义的指针*p1,*p2;
代码空间就是操纵此程序的一些汇编指令。
就这样吧,能理解不?这些细东西就得学汇编才好理解
补充点:上面是操作系统分配的内存空间。而你在程序中使用new指向的内存地址是此程序请求的,所以你需要delete释放它
---------------------------------------------------------*/
#include <iostream>
using namespace std;
int main()
{
int *p1=new int;
cout << p1 << ", " << &p1 << endl;
// p1指针指向的动态内存地址; &p1表示此程序堆栈空间地址
*p1=12; // 把数据区的12复制到p1指向的动态内存
int *p2=new int;
cout << p2 << ", " << &p2 << endl;
// p2指针指向的动态内存地址; &p2表示此程序堆栈空间地址(注意&p1-&p2=0000000C)
*p2=122;
cout<<"(赋予p1指针的值)" << *p1 << endl;
cout<<"(12和122都有地址,在此程序的数据区)"<<p1<<"(地址不一样)"<<&p1<<endl;
cout<<"(测试2赋予p2指针的值)"<<*p2 <<endl;
cout<<"(测试2也有地址)"<< p2 <<"(测试2地址不一样)"<<&p2<<endl;
delete p1;
delete p2;
// system("pause");
return 0;
}
[
本帖最后由 yss28 于 2013-9-11 23:10 编辑 ]