动态分配内存需要包含stdlib.h和mallo.h两个头文件,并利用指针和如下标准函数配合来实现。 void *malloc(size_t size); 同时,当内存不再使用的时候,应使用free()函数将内存块释放掉。 重点是能够临时按需(size可以是变量)分配内存。 malloc 函数其实就是在内存中找一片指定大小的空间,然后将这个空间的首地址给一个指针变量,这里的指针变量可以是一个单独的指针,也可以是一个数组的首地址, 这要看malloc函数中参数size的具体内容。我们这里malloc分配的内存空间在逻辑上是连续的,而在物理上可以不连续。我们作为程序员,关注的 是逻辑上的连续,其它的,操作系统会帮着我们处理的。
C++ 利用new运算符申请内存。 new是c++的关键字,它本身不是函数,new不依赖于头文件,c++编译器就可以把new编译成目标代码。在使用上,malloc 和 new 至少有两个不同: new 返回指定类型的指针,并且可以自动计算所需要大小。比如: int *parr; parr = new int[100]; //返回类型为int *类型(整数型指针),分配大小为sizeof(int) * 100; (而malloc 必须要由我们计算字节数,并且在返回后强行转换为实际类型的指针。因为malloc 函数返回的是 void * 类型。) |
|