VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 414|回复: 2

[求助] VC new分配时报错

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

我想问的是你的 cRsavbuff、clno 真的需要定义那么大的数组吗?如果确实需要的这么大的空间的话,可以考虑自己管理内存,这样碎片能少很多!
50_avatar_middle
ico_lz  楼主| 发表于 2018-10-30 17:04:13 | 显示全部楼层
谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

关闭

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

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

GMT+8, 2019-3-26 13:37

Powered by Discuz! X3.4

© 2009-2019 cctry.com

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