1.栈:由系统自动管理(主要管理局部变量)
(1)栈区里面的变量也好常量也好,在函数执行完,自动被系统回收掉,所以我们如果需要在程序执行的时候让一个变量永恒存在,那么就把他的地址传到函数中,参数用该传入指的同等类型来接收,然后再进行赋值,如果有的类型的指针一会指向这个一会指向那个,就不需要给他开辟内存空间.
2.堆区:(由用户随意管理)
(1)开辟和释放要成对出现,没释放会造成内存泄漏,内存是很宝贵的,泄露多了系统运行空间被占满就没有空间,如果开辟多个该类型空间释放时要加[],例如
int *p=new int----开辟一个int类型大小的空间(4个字节)----delet p(!注意如果这里delete p+1是不对的,虽然保存的是首地址但是指针加减一次性是读取该指针类型的字节数)例如原来保存的4个字节的整形数被分配为 1000 1001 1002 1003 这个地址(每个地址占一个字节)p+1就会直接跳四个字节到1004.注意定义什么类型的指针就读取该类型的字节数,在c语言中可以将指针指向的任意变量类型强制转换为你想要强转的类型,不管是转成什么样,左值还是读取那么多字节数,依然不变的。
3.全局区(主要管理全局变量成员,静态成员)
(1)静态成员他不是属于私有的,谁都可以调用
4代码区(主要由系统管理,将所有的代码转换成二进制)
5常量区(存储字符串常量)
(1)如果将两个指针指向一个常量,那么这两个指针的地址相同,