| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 836 人关注过本帖
标题:咨询__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
快速回复:咨询__finally的使用方法?
数据加载中...
 
   



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

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