当前位置:七道奇文章资讯编程技术VC/C++编程
日期:2011-03-22 13:55:00  来源:本站整理

<b>若何简化暂时内存的分配与释放</b>[VC/C++编程]

赞助商链接



  本文“<b>若何简化暂时内存的分配与释放</b>[VC/C++编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

描写:在编制 C++ 程序时,最常碰到的一个令人恼火的问题就是暂时资源的分配与释放问题, 由于程序的逻辑关系普通很复杂,引发非常的大概性也很多,为了妥善处理运行时非常, 我们不得不在大概引发非常的任何地方释放已分配成功的暂时资源,然后返回, 以保证程序的结实安定及系统的洁净,所以程序中大概到处可见delete、free等语句, 显得很繁! 那么有没有办法使得只顾分配、利用暂时资源,而不顾后来事若何呢?

在Delphi中可以用try...finally...实现一些资源的保护,但C++Builder中好象没有try...finally 这样的语法构造, 所以,在程序中为了精确释放内存等暂时资源,不得不在有大概出错的任何地方书写释放语句delete,以保护有限的资源. 其实有一个较简单的办法可以一劳永逸,即为暂时资源定义一个大众的类,将C++的new / delete语句稍作封装便可,类的定义以下:

TMemory{
public:
void *ptr;
public:
TMemory(int size){ ptr=(void*)new char[size]; _WINAPI_::ZeroMemory(ptr,size);}
~TMemory(void){ if(ptr) delete ptr; }
};
利用示比方下:
void TMainForm::function(int size)
{
TMemory mem(size); //注意捕捉非常:EOutOfMemory!
char *str=(char *)mem.ptr; //获得分配的内存指针
some_func(str); //别的操作
return; //直接返回,而没必要耽忧释放内存,即便some_func中发生非常一样会自动释放内存
}

若何简化等候光标的的设置与复原 ?

--------------------------------------------------------------------------------

办理问题的原理同上,类的定义以下:

#pragma warn -bei //关闭列举变量赋值的告诫
class TWaitCursor{//自动处理等候光标,当函数调用栈崩溃时自动复原光标
private:
TCursor oldc;
public:
TWaitCursor(void) : oldc(Screen->Cursor){ Screen->Cursor = crHourGlass; }
~TWaitCursor(void){ Screen->Cursor = oldc; }
};

利用示比方下:

void TMainForm::function(void)
{
some_opr(...); //别的操作
TWaitCursor waitit; //变成等候光标
some_func(...); //别的操作
return; //直接返回,光标会自动复原
}

当成立TWaitCursor类的暂时变量时,光标会改成等候状况,当该函数返回时,会自动复原光标.

注:成立自动变量时应采取以下方法,以避免Borland编译器的自动优化:

TWaitCursor wait;

而不能定义成下面的模样:

TWaitCursor wait();


  以上是“<b>若何简化暂时内存的分配与释放</b>[VC/C++编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • <b>hosts是什么 hosts文件在什么位置 若何改正hosts</b>
  • <b>在 Windows 8 中手动安装语言包</b>
  • <b>五个常见 PHP数据库问题</b>
  • Windows中Alt键的12个高效快速的利用本领介绍
  • <b>MySQL ORDER BY 的实现解析</b>
  • <b>详解MySQL存储历程参数有三种范例(in、out、inout)</b>
  • <b>Win8系统恢复出来经典的开始菜单的办法</b>
  • <b>Win8系统花屏怎么办 Win8系统花屏的办理办法</b>
  • <b>Windows 7系统下无线网卡安装</b>
  • <b>为什么 Linux不需求碎片整理</b>
  • <b>Windows 8中删除账户的几种办法(图)</b>
  • <b>教你如安在win7下配置路由器</b>
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .