在C中用库函数malloc实现动态内存分配
malloc是在C语言中用于在程序运行时在堆中进行动态内存分配的库函数。
1、函数原型
#include <stdlib.h>
void *malloc
(
size_t size
);
返回值:
成功时,返回所分配存储空间的起始地址;返回值类型为void*,在C语言中可以把void*直接赋给具体的类型,但是在C++中必须进行强制类型转换。
在C中用库函数free释放动态内存
在C++中用new实现动态内存分配
一. 分配一个变量
对于 P = new T (T是任意类型名,P是类型为T *的指针),就是动态分配出一片大小为sizeof(T)字节的内存空间,并且将内存空间的起始地址赋值给P。eg:
int * pn;
pn = new int;
* pn = 5;
二. 分配一个数组
对于 P = new T[Na] (T是任意类型名,P是类型为T *的指针),就是动态分配出一片大小为N * sizeof(T)字节的内存空间,并且将内存空间的起始地址赋值给P。eg:
int * pn;
pn = new int[100];
pn[0] = 5;
返回值:
成功时,返回所分配存储空间的起始地址;返回值类型为T*。
在C++中用delete释放动态内存
注意:用“new”动态分配的内存空间一定要用“delete”运算符进行释放。
一. 释放一个变量
语法:
delete 指针; // 该指针必须指向new出来的变量
eg:
int * p = new int;
*p =5;
delete p;
注意:一片空间不能被delete多次。
二. 释放一个数组
语法:(一定要加[ ])
delete [] 指针; // 该指针必须指向new出来的数组
eg:
int * p = new int[20];
p[0] =5;
delete []p;