65,211
社区成员
发帖
与我相关
我的任务
分享
如果楼主对new的机制有所了解也就不会有此一问!
c++中的new形式分为以下几种:
void* operator new(size_t size) throw();
void* operator new(size_t size) throw std:bad_alloc;
void* operator new(size_t size,void* buffer) throw();
.........
不管从那种形式来看,new都是一种函数形式,对函数传参(不论变量还是常量)都不会有任何的问题
但数组不同,数组必须在声明的同时就初始化,换句话来说,数组在预编译时期就需得到其占有的内存长度
而变量是runtime时期才能确定其值。因此,数组不能用变量确定其长度,而new作为一种函数的形式
接受可变的形参完全符合逻辑 (以上的解释排除符合c99标准的编译器版本)
int *s=new int[r]//动态分配一个长度为r 整型数组 地址给S
int *s=new int(9)//动态分配内存 int类型 并初始化为9 地址给S
int *s=new int(9)// 分配单个 int 内存空间
int r=9;
int *s=new int[r]// 分配 r 个 int 内存空间