| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 922 人关注过本帖
标题:FormatMessage函数难道会自动申请一个字符串空间 ?
取消只看楼主 加入收藏
vfdff
Rank: 6Rank: 6
等 级:侠之大者
威 望:8
帖 子:2172
专家分:425
注 册:2005-7-15
结帖率:79.17%
收藏
已结贴  问题点数:5 回复次数:4 
FormatMessage函数难道会自动申请一个字符串空间 ?
程序代码:
string GetErrorMsg()
{
    DWORD dwErrorId = GetLastError();
    LPVOID lpMsgBuf;

    FormatMessage(
        FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
        NULL,
        dwErrorId,
        0,
        (LPSTR) &lpMsgBuf,
        0,
        NULL);

    string strErrorMsg = (char*)lpMsgBuf;
    LocalFree(lpMsgBuf);

    return strErrorMsg;
}
请问为什么lpMsgBuf变量没有申请空间,却要使用LocalFree释放空间
搜索更多相关主题的帖子: 申请 自动 空间 字符 函数 
2010-09-14 01:35
vfdff
Rank: 6Rank: 6
等 级:侠之大者
威 望:8
帖 子:2172
专家分:425
注 册:2005-7-15
收藏
得分:0 
回复 2楼 hahayezhe
这样的函数实现方式不是稍不留意就造成内存泄露 ?

~~~~~~~~~~~~~~~好好学习~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2010-09-16 00:53
vfdff
Rank: 6Rank: 6
等 级:侠之大者
威 望:8
帖 子:2172
专家分:425
注 册:2005-7-15
收藏
得分:0 
回复 4楼 东海一鱼
如果我在设计这样的代码,我宁愿多传入一个参数,也不愿意这样存在内存泄露操作的表示方法,空间的申请和释放不再一个作用域真的 很危险

~~~~~~~~~~~~~~~好好学习~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2010-09-17 00:57
vfdff
Rank: 6Rank: 6
等 级:侠之大者
威 望:8
帖 子:2172
专家分:425
注 册:2005-7-15
收藏
得分:0 
回复 6楼 东海一鱼
加一个参数,可以通过引用方式传递,并不一定要按值的方式进行传递的

~~~~~~~~~~~~~~~好好学习~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2010-09-21 19:59
vfdff
Rank: 6Rank: 6
等 级:侠之大者
威 望:8
帖 子:2172
专家分:425
注 册:2005-7-15
收藏
得分:0 
回复 8楼 东海一鱼
具体场景具体考虑吧!

对于 实时数据采集系统,我感觉既然是实时的,这就意味着系统应该能保证被采集的数据进行实时的处理,这样的话,应该设计一个FIFO应该就好了

~~~~~~~~~~~~~~~好好学习~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2010-09-22 01:20
快速回复:FormatMessage函数难道会自动申请一个字符串空间 ?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.011675 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved