malloc( )函数
作用:在堆中分配一块内存,并返回这块内存的指针。
特点:如果在某函数中用该函数分配内存,则该某函数结束时,分配的内存不会被释放,只能等着被free( )释放。
原型:
void* malloc(size_t size)
例子:
// 申请2个double型大小的内存
double* a;
a=(double*)malloc(2*sizeof(double));
进阶
memcpy( )函数
作用:将一块内存上的值复制到另一块内存上。
特点:通常情况下,相比于赋值符号(=)并无差异。但对于数组,memcpy( )函数可以方便的将一个数组内的值复制到另一个数组中,而赋值符号需要编写循环逐一赋值。
原型:
void* memcpy(void * destination, const void* source, size_t num);
例子:
#include <cstring>
int a[3];
a[0] = 1; a[1] = 2; a[2] = 3;
int b[3];
/*b[3] = a[3];*/
memcpy(b, a, sizeof(int) * 3);
std::cout <<
b[0] <<
b[1] <<
b[2] << std::endl;
注意:
在调用memcpy( )函数之前,两个指针必须已经初始化,即指向某个内存块。
也就是说,通过该函数能达到复制值的目的,但不能分配内存。