求大神解释一下,为嘛?

一只小可爱啊 2016-09-19 04:46:28
Complex (*src)[DIM]=new Complex[SIZE][DIM]; //这样写没有问题
Complex (*inBuffer)[DIM] = new Complex[SIZE][DIM]; //和下面屏蔽的2句话 完全一样
Complex (*outBuffer)[DIM] = new Complex[SIZE][DIM];
for(int i=0;i<SIZE;i++)
{
for(int j=0;j<SIZE;j++)
{
.........
}
}
//Complex (*inBuffer)[DIM] = new Complex[SIZE][DIM]; //和上面屏蔽的2句话 完全一样
//Complex (*outBuffer)[DIM] = new Complex[SIZE][DIM];

Complex 是结构体,SIZE=8,DIM=5;
按照上面写的话,不会出现错误,
但是把上面2句话屏蔽,下面不屏蔽,出现下图所示报错


想弄清楚为什么?

...全文
200 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
一只小可爱啊 2016-09-20
  • 打赏
  • 举报
回复
确实是越界了,程序跑通了,
但是主要原因是我想知道,如图,为嘛不在循环里面报错,而要在下面new报错
dreamcs 2016-09-20
  • 打赏
  • 举报
回复
引用 4 楼 tonight22 的回复:
确实是越界了,程序跑通了, 但是主要原因是我想知道,如图,为嘛不在循环里面报错,而要在下面new报错
越界之后,调用栈乱了。所以出错了。
qq_36188730 2016-09-20
  • 打赏
  • 举报
回复
<A href="http://www.corewise.cn/">android数据采集器</A> <A href="http://www.corewise.cn/">RFID手持终端</A> <A href="http://www.corewise.cn/">RFID手持机</A>
dreamcs 2016-09-20
  • 打赏
  • 举报
回复
引用 2 楼 zgl7903 的回复:
for(int i=0;i<SIZE;i++) { for(int j=0;j<DIM;j++) ? {
这应该是答案了。
赵4老师 2016-09-20
  • 打赏
  • 举报
回复
其实电脑开机后物理内存的每个字节都是可读写的,从来不会因为所谓的new、delete或malloc、free而被创建、销毁。区别仅在于操作系统内存管理模块在你读写时是否能发现并是否采取相应动作而已。操作系统管理内存的粒度不是字节而是页,一页通常为4KB。
paschen 版主 2016-09-19
  • 打赏
  • 举报
回复
二维数组不是像你这样申请内存的
zgl7903 2016-09-19
  • 打赏
  • 举报
回复
for(int i=0;i<SIZE;i++) { for(int j=0;j<DIM;j++) ? {
cutmelon 2016-09-19
  • 打赏
  • 举报
回复
很大可能就是越界了,delete的时候会出现这个提示

64,654

社区成员

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

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