标题:咨询__finally的使用方法?
取消只看楼主
vfdff
Rank: 6Rank: 6
等 级:侠之大者
威 望:8
帖 子:2172
专家分:425
注 册:2005-7-15
结帖率:79.17%
已结贴  问题点数:10 回复次数:1 
咨询__finally的使用方法?
程序代码:
#include <stdlib.h>
#include <stdio.h>
#include <windows.h>



char* MyHookFn2(char* szTxt)
{
    char* pBuf = (char*)malloc(strlen(szTxt) + sizeof(char*) * 32);
    return pBuf;
   

    __try
    {
        sprintf(pBuf,"%s\n",szTxt);
        printf("%s\n",pBuf);
    }
    __finally
    {
        free(pBuf);
        pBuf = NULL;
    }
}

int main(int argc,char** argv)
{
   

    printf("%s\n", MyHookFn2("test"));
   

    return 0;
}
网上看到 __finally后面的复合语句是终止处理语句。无论受保护区域是正常终止还是异常终止(比如 goto,return,leave等),当它退出的时候,终止处理语句都要执行。但是为什么上述函数char* MyHookFn2(char* szTxt)中的__finally没有被执行呢?
搜索更多相关主题的帖子: finally 咨询 
2010-08-05 00:58
vfdff
Rank: 6Rank: 6
等 级:侠之大者
威 望:8
帖 子:2172
专家分:425
注 册:2005-7-15
得分:0 
回复 2楼 烟雨袅袅
程序代码:
#include <malloc.h>
#include <stdio.h>
#include <string.h>
char* MyHookFn2(char* szTxt)
{
    char* pBuf = (char*)malloc(strlen(szTxt) + sizeof(char*) * 32);

    __try
    {
        sprintf(pBuf,"%s\n",szTxt);
        printf("%s\n",pBuf);
    }

     return pBuf;

    __finally
    {
        free(pBuf);
        pBuf = NULL;
    }
}

int main(int argc,char** argv)
{
    printf("%s\n", MyHookFn2("test"));
    return 0;
}
您说的可能对,因为我上述代码在编译时没有通过,说明这个 __try和__finally确实要配对!

~~~~~~~~~~~~~~~好好学习~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2010-08-06 00:38



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




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

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