int (*a)[10] = new int[][10]

peeky01 2011-09-28 11:11:48
int (*a)[10] = new int[][10];

这分配多大内存?a怎么用的。。。。
...全文
340 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
peeky01 2011-10-01
  • 打赏
  • 举报
回复
呵呵 g++通不过
飞天御剑流 2011-09-29
  • 打赏
  • 举报
回复
int (*a)[10] = new int[][10];是错误的,通过编译的那个编译器的行为不符合标准。
pathuang68 2011-09-29
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 woheduole 的回复:]

引用 4 楼 pathuang68 的回复:
引用楼主 peeky01 的回复:
int (*a)[10] = new int[][10];

这分配多大内存?a怎么用的。。。。


应该不能通过编译吧。


真能通过
[/Quote]

或许某些编译器上可以通过吧,我觉得那个写法至少是不是编译器独立的。如果可以通过的话,那么new int[][10];和new int[0][10];的意思应该相同,也就是说,它其实是一个一维数组。
_了凡_ 2011-09-29
  • 打赏
  • 举报
回复
g++ (Ubuntu/Linaro 4.4.4-14ubuntu5) 4.4.5编译不过……
帮顶了。
peeky01 2011-09-29
  • 打赏
  • 举报
回复
是10*sizeof(int)呵呵

[Quote=引用 16 楼 peeky01 的回复:]
已分配了4*sizeof(int)内存。。


引用 6 楼 chiyer 的回复:
a是一个指针,指向一个含有10个int的数组

.....
int b[10];
a = &b;
[/Quote]
peeky01 2011-09-29
  • 打赏
  • 举报
回复
已分配了4*sizeof(int)内存。。

[Quote=引用 6 楼 chiyer 的回复:]
a是一个指针,指向一个含有10个int的数组

.....
int b[10];
a = &b;
[/Quote]
peeky01 2011-09-29
  • 打赏
  • 举报
回复
int (*d)[10] = new int[][10];
(*d)[0] = 4; //可以运行
(*d)[1] = 5; //可以运行
std::cout << sizeof(*d); // 输出40
std::cout << (*d)[0]; // 输出4

。。。这神马情况
AnYidan 2011-09-29
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 woheduole 的回复:]
引用 4 楼 pathuang68 的回复:
引用楼主 peeky01 的回复:
int (*a)[10] = new int[][10];

这分配多大内存?a怎么用的。。。。


应该不能通过编译吧。


真能通过
[/Quote]

通过了编译,也运行不了
Frog1228 2011-09-29
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 devil_sean 的回复:]
我试了下,给了警告,不过还真通过了,但是给出了警告,分配的空间大小只有4个字节,sizeof(new int[][10])=4,完全不是预期目的,存在很大的缺陷
[/Quote]
3楼说是10个Int字节,你是4个字节,到底几个,用了不同的编译器?
a是数组指针,右边又是一个第一维维数不确定的二维数组。
Devil_sean 2011-09-29
  • 打赏
  • 举报
回复
我试了下,给了警告,不过还真通过了,但是给出了警告,分配的空间大小只有4个字节,sizeof(new int[][10])=4,完全不是预期目的,存在很大的缺陷
星羽 2011-09-29
  • 打赏
  • 举报
回复
vs



new int[];
00411B4E push 0
00411B50 call operator new (411212h)
00411B55 add esp,4
00411B58 mov dword ptr [ebp-0C8h],eax
星羽 2011-09-29
  • 打赏
  • 举报
回复
如果你的编译器能通过你的代码
那它应该也能通过

int* p = new int[];

这个时候应该是给new传了个0的大小

c++ iso :
When the value of the expression in a direct-new-declarator is zero, the allocation function is called to allocate
an array with no elements
w835369950 2011-09-28
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 chiyer 的回复:]

a是一个指针,指向一个含有10个int的数组

.....
int b[10];
a = &b;
[/Quote]
基本同意!但a还没指向任何地址吧(仅楼主那情况)
星羽 2011-09-28
  • 打赏
  • 举报
回复
a是一个指针,指向一个含有10个int的数组

.....
int b[10];
a = &b;
我喝多了 2011-09-28
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 pathuang68 的回复:]
引用楼主 peeky01 的回复:
int (*a)[10] = new int[][10];

这分配多大内存?a怎么用的。。。。


应该不能通过编译吧。
[/Quote]

真能通过
pathuang68 2011-09-28
  • 打赏
  • 举报
回复
[Quote=引用楼主 peeky01 的回复:]
int (*a)[10] = new int[][10];

这分配多大内存?a怎么用的。。。。
[/Quote]

应该不能通过编译吧。
我喝多了 2011-09-28
  • 打赏
  • 举报
回复
调试了一下,也可以开辟, 开辟了10个4字节的空间, 一个int是4个字节,开辟了10个
peeky01 2011-09-28
  • 打赏
  • 举报
回复
可以运行的 你试试
我喝多了 2011-09-28
  • 打赏
  • 举报
回复
开辟2维数组空间, 第一维不给明确的值怎么开辟啊.

65,210

社区成员

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

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