new/malloc申请内存为什么会失败?

依然做自己的软件 2006-12-01 06:41:51
在我程序中有这三行代码:

addr1 = new BYTE[n1]; // line 1
addr2 = new short[n2]; // line 2
addr3 = new short[n2*4]; // line 3

在单步跟踪中,n1=8000,n2=2300,line 1运行成功,line 2出错并导致程序死掉。我多次高度,重启机器后还是这个地方出错,n1,n2保证是为正的。刚开始这部分是在一个线程中,后来我直接调用它,还是同样出错,同样原因?

后来我又改成 addr1 = new BYTE[n1 + n2*10]; 一次分配所有内存,还是出错,转到异常处理!

求救!
...全文
285 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
lijunjun 2006-12-11
  • 打赏
  • 举报
回复
我也没弄清楚,如果程序不大,把代码多贴点上来兄弟们看看吧.
  • 打赏
  • 举报
回复
提示中出现privileged instruction的错误,我搜了下,这和访问权限有关,比如访问某个端口会出现这个错误,但我程序中只是申请内存啊,想不通,问题还未解决~~~~~
  • 打赏
  • 举报
回复
程序其它地方的问题怎么会影响到这几行呢

我也想不通
  • 打赏
  • 举报
回复
不是递归调用,我一步步跟踪的

addr2,addr3都是 (short *)型的

哎,今天还是接着调试。。。
chenlixin007 2006-12-01
  • 打赏
  • 举报
回复
是不是你的内寸开销不够
@@鹏~~~ 2006-12-01
  • 打赏
  • 举报
回复
addr2的类型是什么? 我这里测试的没问题啊!

int n2 = 5000;
short *addr2 = new short[n2];

还是你的程序其它部分有问题,仔细看看吧!

lovesnow1314 2006-12-01
  • 打赏
  • 举报
回复
是不是递归调用?
可能栈满了。
  • 打赏
  • 举报
回复
我多次高度
===========
应为多次调试

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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