内存分配
指操作系统在运行程序时将计算机内存中的一部分空间分配给程序使用的过程。在程序运行时,需要使用内存来存储程序代码、数据以及程序的执行结果。内存分配可以通过以下两种方式实现:
静态内存分配:程序在编译时就确定了需要使用的内存空间大小,编译器会为程序分配固定的内存空间。静态内存分配的优点是效率高,但是缺点是无法动态地调整内存空间的大小。
动态内存分配:程序在运行时动态地向操作系统请求需要的内存空间。常见的动态内存分配方式有堆和栈两种。
堆内存分配:由程序员显式地向操作系统请求内存空间,并且手动管理内存的分配和释放。堆内存分配的优点是可以动态地调整内存空间的大小,缺点是容易出现内存泄漏和内存溢出等问题。
栈内存分配:由编译器自动分配和管理内存空间,程序员无需显式地请求内存空间或释放内存空间。栈内存分配的优点是简单易用,但是缺点是不能动态地调整内存空间的大小。
在进行内存分配时,需要注意内存的使用情况,避免出现内存泄漏、内存溢出等问题。内存泄漏指程序在使用完内存后未正确释放内存空间,导致程序占用过多内存,最终导致程序崩溃。内存溢出指程序在使用内存时超出了内存空间的限制,导致程序出现错误或崩溃。
管理堆内存
C 语言中一般使用 malloc() 函数来分配内存空间,free() 函数来释放内存空间。但在 c++ 语言中我们使用 new 关键字来分配内存空间,delete 关键字来释放内存空间。后者在性能等方面优于前者。
例如:
`int *p; //定义一个整型指针变量
p = new int;
其中 p = new int; 表示动态分配一个存放整型数据的内存空间,并将其首地址赋给整型指针变量 p,此时省略指针变量 p 前的 *
`