标题: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



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-320359-1-1.html




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

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