使用new时,内存小时正常,大时也正常,在一定范围内就出错

DesertStorm 2003-12-29 03:51:30
做一个图象处理程序,如下语句
m_lpImageData = new unsigned char [ nWidth * nHeight];
m_lpImageData之前从来没有使用过。
当图象很小时,nWidth<200,nHeight<200时 正常;
当图象很大时,nWidth>1000,nHeight>1000时 正常;
当图象的长和宽在400,500左右时 内存申请失败。

换成
m_lpImageData = (unsigned char*) malloc ( nWidth*nHeight*sizeof(unsigned char));
同样的问题发生,图象在500*500左右时,内存申请失败。

有人遇到过这种情况吗?

恳请大侠指教。

...全文
47 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
whoho 2003-12-30
  • 打赏
  • 举报
回复
我原本用VC6做过图象处理,那样大小的内存应该没有问题的:)
whoho 2003-12-30
  • 打赏
  • 举报
回复
我运行没有问题
你试试改连接选项中的堆
TH 2003-12-30
  • 打赏
  • 举报
回复
内存有问题?:)
fierygnu 2003-12-30
  • 打赏
  • 举报
回复
用malloc时errno是什么?
DesertStorm 2003-12-29
  • 打赏
  • 举报
回复
我也觉得非常奇怪,从来没遇到过这样的问题。
1000*1000应该没有问题的,运行结果是正确的,而且图象处理程序申请这么大的内存很正常的,要不然大图象怎么处理。
只有不大不小的图象就会出现上述问题。
使用的是Visual C++6.0

还有其他导致该结果的可能吗?
neptunez 2003-12-29
  • 打赏
  • 举报
回复
debug, 看看1000X1000等于多少,看看500X500等于多少。
victor_cui 2003-12-29
  • 打赏
  • 举报
回复
除非你的机器是16位的
victor_cui 2003-12-29
  • 打赏
  • 举报
回复
1000 * 1000 不会的
i_jianyong 2003-12-29
  • 打赏
  • 举报
回复
当nWidth>1000,nHeight>1000时,nWidth * nHeight会不会超出了int的范围,其结果反而变小了?
victor_cui 2003-12-29
  • 打赏
  • 举报
回复
没听说过,两头可以中间却不行,并且也不可逻辑,嗬嗬,一定是你别的地方搞错了

15,440

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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