VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

有编程疑问吗?还请到提问专区发帖提问!
搜索
查看: 181|回复: 2

[求助] VC new分配时报错

[复制链接]
50_avatar_middle
在线会员 wxliang 发表于 2018-10-30 14:27:53 | 显示全部楼层 |阅读模式
3驿站币
#define BUFFER_SIZE 1024*40                // I/O请求的缓冲区大小


struct CUserInfo
{
public:
        SOCKET m_MySKT;
        SOCKET m_targetSKT;
        SYSTEMTIME lasct;
        SYSTEMTIME        closetime;
        SYSTEMTIME        logintime;
        int isDataSend;
        int loginsStatus;
        int dlen;//所接收字串的长度
        char cRsavbuff[BUFFER_SIZE*2+10240];
        char clno[USERNO_SIZE];
        char userIP[60];
        int ufno;
        int ToutType;
        CUserRecvBuff RecvDataBuff;
};


CUserInfo *uerinfo=new CUserInfo();

当长时间运行后,就会报错,错误如下:
Unhandled exception at at 0x7583C54F in DataRelayUsers.exe: Microsoft C++ exception: CMemoryException at memory location 0x1E90F8C8.

感觉是内存不够用了吧,求如何解决呀





上一篇:论坛有没有提供源代码例程的地方
下一篇:想学 linux C开发

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

51_avatar_middle
online_admins Syc 发表于 2018-10-30 14:56:09 | 显示全部楼层
BUFFER_SIZE 本身大小就比较大,所以导致 CUserInfo 的单个对象所占用的体积就很大。如果楼主不停的 new 又没有及时的释放,可能就会导致当前进程的用户堆空间不够用。或者即使释放了,也可能会产生大量的内存碎片,之后再进行 new 申请的时候就会申请失败,导致 new 返回的指针为NULL。

我想问的是你的 cRsavbuff、clno 真的需要定义那么大的数组吗?如果确实需要的这么大的空间的话,可以考虑自己管理内存,这样碎片能少很多!

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复

使用道具 举报

50_avatar_middle
ico_lz  楼主| wxliang 发表于 2018-10-30 17:04:13 | 显示全部楼层
谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

关闭

站长提醒上一条 /1 下一条

QQ
QQ在线咨询
联系电话
13591366679
手机扫一扫 关注本站精彩内容
wxqrcode

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号tongdun|网站地图wx_jqr

GMT+8, 2018-11-16 12:20

Powered by Discuz! X3.4

© 2009-2018 cctry.com

快速回复 返回顶部 返回列表