new int(10)和 new int[10]

wyget 2010-07-11 12:32:54
这两个都能分配连续的区域
我想问一下,有什么不同??
...全文
1871 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
wyget 2010-07-12
  • 打赏
  • 举报
回复
我明白了~~~谢谢大家~~
phpjspasp 2010-07-11
  • 打赏
  • 举报
回复
int* a = new int(10);
申请一个int的空间,初始化为10,返回int *型的指针指向这块空间

new int[10]
申请10个int的空间,返回指向第一个int的指针。
wyget 2010-07-11
  • 打赏
  • 举报
回复
int* a = new int(10);
cout << a[5] << endl;

但是,为什么可以访问a[5]呢,输出0
到底分配给a多少个存储单元?
Crob 2010-07-11
  • 打赏
  • 举报
回复
new int(10)表示创建了一个int指针,并初始化它的实例的值为10。
new int[10]表示创建一个10个大小的int指针数组。
cxxer 2010-07-11
  • 打赏
  • 举报
回复

new int(10); //创建一个指向int类型数据的指针,并初始化它所指对象的值为10。
new int[10]; //创建指向10个大小的int数组的指针。
pengzhixi 2010-07-11
  • 打赏
  • 举报
回复
第1个是分配一个int大小的内存并初始化为10,第2个是分配10个int大小的内存。
ForestDB 2010-07-11
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 wyget 的回复:]

int* a = new int(10);
cout << a[5] << endl;

但是,为什么可以访问a[5]呢,输出0
到底分配给a多少个存储单元?
[/Quote]
你这叫越界。
Yanger_xy 2010-07-11
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 crob 的回复:]
new int(10)表示创建了一个int指针,并初始化它的实例的值为10。
new int[10]表示创建一个10个大小的int指针数组。
[/Quote]

+1
你又想怎样 2010-07-11
  • 打赏
  • 举报
回复
buzhid
chaiyanlin 2010-07-11
  • 打赏
  • 举报
回复
LZ也要注意一下,你问的最好要严谨一点!

你说分配连续的区域,我可以说对也可以说不对!关键是你这个连续的区域是在什么层面是考虑的

比如 int arr[10]//这个无论是从物理还是逻辑上都是连续的区域没问题
但是如果是 int* p = new int[10]//那就不一定了!,从逻辑上是连续的区域,但从物理上不一定连续!

na2650945 2010-07-11
  • 打赏
  • 举报
回复
从本质来说。
就一点不一样。
HoBoss 2010-07-11
  • 打赏
  • 举报
回复
楼上各位说得很清楚了啊。
youkuxiaobin 2010-07-11
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 phpjspasp 的回复:]
int* a = new int(10);
申请一个int的空间,初始化为10,返回int *型的指针指向这块空间

new int[10]
申请10个int的空间,返回指向第一个int的指针。
[/Quote]
对的
shaohui973 2010-07-11
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 wyz007134 的回复:]
这两个都能分配连续的区域
我想问一下,有什么不同??
int *p = new int(10); 相当于int *p; int i = 10; p = &i;
int *p = new int[10]; 相当于int *p; int a[10]; p = a;
一个是整数,一个是数组;前者4个字节,后者4*10个字节,你说有什么不同。
[/Quote]貌似是这样的:用new申请的空间要用delete来释放,否则会造成内存泄漏;
wyz007134 2010-07-11
  • 打赏
  • 举报
回复
这两个都能分配连续的区域
我想问一下,有什么不同??
int *p = new int(10); 相当于int *p; int i = 10; p = &i;
int *p = new int[10]; 相当于int *p; int a[10]; p = a;
一个是整数,一个是数组;前者4个字节,后者4*10个字节,你说有什么不同。
liutengfeigo 2010-07-11
  • 打赏
  • 举报
回复
C++语法说了你越界后果自负。
ameyume 2010-07-11
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 wyget 的回复:]
int* a = new int(10);
cout << a[5] << endl;

但是,为什么可以访问a[5]呢,输出0
到底分配给a多少个存储单元?
[/Quote]
访问了一个非法的内存空间,里面是什么就输出什么,如果那个位置正好存的是1,就输出1

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧