数组声明之间有什么区别
int *a=new int(10);
AND
int *a=new int[10];
有什么限制,哪个更好??由于两部作品似乎是相同的.....
第一个分配一个单个整数,其值为10
。第二个方法分配一个包含未初始化值的10个整数的数组。
第一个需要由delete
释放,第二个需要delete[]
。
但是,在现代C ++中,很少应该使用手动内存管理at all。首选使用标准容器类和/或智能指针。
a = new int(10);
分配1个整数并将其值设置为10。
a = new int[10];
创建10个整数并调用默认构造函数(尽管对于具有琐碎默认构造函数的原始类型(例如int
,它可能会忽略它)。]
此外,您还需要以不同的方式删除它们delete
与delete[]