2.malloc()与new
1.malloc()
malloc的语法是:指针名=(数据类型*)malloc(长度),(数据类型*)表示指针
void *malloc(int size);
说明:malloc 向系统申请分配指定size个字节的内存空间。返回类型是 void* 类型。void* 表示未确定类型的指针。
例如:
int *p = (int *)malloc(sizeof(int));
//mallo函数的返回值是一个指向int型数据的指针(返回值是一个指针),也就是说开辟的内存是用来存放int型数据的
申请出一段连续的内存,方法无非是指定你所需要内存大小。
比如想分配100个int类型的空间:
int* p = (int *) malloc ( sizeof(int) * 100 ); //分配可以放得下100个整数的内存空间
malloc 函数返回的是 void * 类型,如果你写成:p = malloc (sizeof(int)); 则程序无法通过编译,报错:“不能将 void* 赋值给 int * 类型变量”。所以必须通过 (int *) 来将强制转换。
malloc 只管分配内存,并不能对所得的内存进行初始化,所以得到的一片新内存中,其值将是随机的。 若进行初始化需要函数memset();
2.new
new 返回指定类型的指针,并且可以自动计算所需要大小
int *p = new int; //返回类型为int* 类型(整数型指针),分配大小为 sizeof(int);
int* parr;
parr = new int [100]; //返回类型为 int* 类型(整数型指针),分配大小为 sizeof(int) * 100;