c++学习笔记(四)

动态内存分配

使用new分配内存

1.指针的用处是在运行阶段分配未命名的内存以储存值。

2.在此情况下,只能通过指针来访问内存。

int *ptr_int=new int;//在内存阶段为一个int值分配未命名的内存,使用指针来访问这个值。
但不能忘记用delete来释放。(与new配对使用)
delete ptr_int;//释放由new分配的内存

栈区和堆区

1.栈区(stack)

由编译器自动分配释放,一般存放函数的参数值、局部变量的值等。

操作方式先进后出。

2.堆区(heap)

一般由程序员分配释放,若程序不释放,程序结束时可能由操作系统回收。
分配方式类似链表。

3.全局区(静态区static)

全局变量和静态变量存储在一起。
程序结束后由系统释放。

4.文字常量区

常量字符串就放在这里,程序结束后由系统释放。

5.程序代码区

存放函数体的二进制代码。

ptr_int 是在栈区,new int是在堆区分配了一块int型空间,左边指向右边。

int num[5];//在编译时分配空间
int *nums=new int[5];//在运行时分配空间,即运行到这一行时才分配空间。

注意

1.不要创建两个指向同一个内存块的指针,可能会误删两次。

2.不要释放已经释放的内存。

3.不要用delete释放不是new分配的内存。

posted @ 2020-02-01 20:57  hqk111  阅读(92)  评论(0编辑  收藏  举报