当前位置: 网站首页>小程序开发>网站优化

连云港小程序制作【连云港企业邮箱】连云港网站外包、连云港微信商城开发、连云港网店美工、连云港淘宝设计

发表日期: 2021-04-25 10:25:07 浏览次数:65

连云港小程序制作【连云港企业邮箱】连云港网站外包、连云港微信商城开发、连云港网店美工、连云港淘宝设计

淮安位于江苏省中北部,江淮平原东部。地处长江三角洲地区, [1]  是苏北重要中心城市, [2]  南京都市圈紧密圈层城市,淮河生态经济带首提首推城市 [3]  ,坐落于古淮河与京杭大运河交点,处在中国南北分界线“秦岭-淮河”线上,拥有中国第四大淡水湖洪泽湖,是全国文明城市 [4]  、国家历史文化名城、国家卫生城市、国家园林城市、国家环境保护模范城市、国家低碳试点城市、中国优秀旅游城市。为淮扬菜的主要发源地之一,是江淮流域古文化发源地之一。

淮安有2200多年建城史。秦时置县,境内有著名的“青莲岗文化”遗址。曾是漕运枢纽、盐运要冲,驻有漕运总督府、江南河道总督府。历史上与苏州、杭州、扬州并称运河沿线的“四大都市”,曾经淮安“因运而兴、因运而盛” [5]  ,有“中国运河之都”的美誉。中国大运河淮安段入选世界遗产名录。淮安地处江苏省长江以北的核心地区,邻江近海,为南下北上的交通要道,区位优势独特。是江苏省的重要交通枢纽,也是长江三角洲北部地区的区域交通枢纽。

淮安人杰地灵,是一代伟人周恩来总理的故乡。 [6]  历史上诞生过大军事家韩信、汉赋大家枚乘、巾帼英雄梁红玉、《西游记》作者吴承恩、民族英雄关天培、《老残游记》作者刘鹗等。 [7] 

淮安有著名的红色旅游景区周恩来故里景区、刘老庄八十二烈士陵园、黄花塘新四军军部纪念馆、苏皖边区政府旧址纪念馆等,生态旅游景区古淮河文化生态景区、里运河文化长廊、洪泽湖古堰景区、第一山国家森林公园、清晏园、金湖水上森林公园等。

微软是通过使用一种特殊的数据结构管理内存分配来做到这一点的。这种结构维护调试信息,比如malloc调用点的文件名和行号,还会在实际的内存分配之前和之后分配缓冲区来检测对实际内存的覆写。关于这种技术的更多信息可以参考Microsoft Developer Network(http://msdn.microsoft.com/en-us/library/x98tx3cf.aspx)。

Mudflap库(http://gcc.fyxm.net/summit/2003/mudflap.pdf)为GCC编译器提供了类似的功能,它的运行时库支持对内存泄漏的检测和其他功能,这种检测是通过监控指针解引操作来实现的。

动态内存分配技术

目前为止,我们已经讨论了如何使用堆管理器分配和释放内存。不过,不同的编译器在技术实现上有所不同。大部分堆管理器把堆或数据段作为内存资源。这种方法的缺点是会造成碎片,而且可能和程序栈碰撞。尽管如此,它还是实现堆最常用的方法。

堆管理器需要处理很多问题,比如堆是否基于进程和(或)线程分配,如何保护堆不受安全攻击。

堆管理器有不少,包括OpenBSD的malloc、Hoard的malloc和Google开发的TCMalloc。GNU C库的分配器基于通用分配器dlmalloc(http://dmalloc.com),它提供调试机制,能追踪内存泄漏。dlmalloc的日志特性可以追踪内存的使用和内存事务,还有一些其他功能。

C的垃圾回收

mallocfree函数提供了手动分配和释放内存的方法。不过对于很多问题,需要考虑使用C的手动内存管理,比如性能、达到好的引用局部性、线程问题,以及优雅地清理内存。

有些非标准的技术可以用来解决部分问题,这里将探讨其中一部分技术。这些技术的关键特性在于自动释放内存。内存不再使用之后会被收集起来以备后续使用,释放的内存称为垃圾,因此,垃圾回收就是指这个过程。

鉴于以下原因,垃圾回收是有价值的:

  • 不需要程序员费尽心思决定何时释放内存;

  • 让程序员专注应用程序本身的问题。

Boehm-Weiser Collector(http://www.hpl.hp.com/personal/Hans_Boehm/gc/)可以作为手动内存管理的替换方法,不过它不属于语言的一部分。

资源获取即初始化

资源获取即初始化(Resource Acquisition Is Initialization,RAII)是Bjarne Stroustrup发明的技术,可以用来解决C++中资源的分配和释放。即使有异常发生,这种技术也能保证资源的初始化和后续的释放。分配的资源最终总是会得到释放。

有好几种方法可以在C中使用RAII。GNU编译器提供了非标准的扩展来支持这个特性,通过演示如何在一个函数中分配内存然后释放可以说明这种扩展。一旦变量超出作用域会自动触发释放过程。

GNU的扩展要用到RAII_VARIABLE宏,它声明一个变量,然后给变量关联如下属性:

  • 一个类型;

  • 创建变量时执行的函数;

  • 变量超出作用域时执行的函数。

这个宏如下所示:

#define RAII_VARIABLE(vartype,varname,initval,dtor) \
    void _dtor_ ## varname (vartype * v) { dtor(*v); } \
    vartype varname __attribute__((cleanup(_dtor_ ## varname))) = (initval)复制代码

在下例中,我们将name变量声明为字符指针。创建它时会执行malloc函数,为其分配32字节。当函数结束时,name超出作用域就会执行free函数:

void raiiExample() {
    RAII_VARIABLE(char*, name, (char*)malloc(32), free);
    strcpy(name,"RAII Example");
    printf("%s\n",name);}复制代码

函数执行后会打印"RAII_Example"字符串。

不用GNU扩展也可以达到类似的效果(http://en.wikipedia.org/wiki/Resource_Acquisition_Is_Initialization#Ad-hoc_mechanisms)。

使用异常处理函数

另一种处理内存释放的方法是利用异常处理(http://www.adomas.org/excc/)。尽管异常处理不属于标准C,但如果可以使用它且不考虑移植问题,它会很有用。下面说明利用Microsoft Visua Studio版的C语言的方法。

这里的try块包含任何可能在运行时抛出异常的语句。不管有没有异常抛出,都会执行finally块,因此也一定会执行free函数。

void exceptionExample() {
    int *pi = NULL;
    __try {
        pi = (int*)malloc(sizeof(int));
        *pi = 5;
        printf("%d\n",*pi);
    }
    __finally {
        free(pi);
    }}复制代码

也可以用别的方法在C中实现异常处理。


c51c866ffa1ab3457f2021e8bbdbcc1.jpg

连云港小程序制作连云港企业邮箱连云港网站外包、连云港微信商城开发、连云港网店美工、连云港淘宝设计

400-111-6878
服务热线
顶部

备案号: 苏ICP备11067224号

CopyRight © 2011 书生商友信息科技 All Right Reserved

24小时服务热线:400-111-6878   E-MAIL:1120768800@qq.com   QQ:1120768800

  网址: http://www.768800.com  网站建设上往建站

关键词: 网站建设| 域名邮箱| 服务器空间| 网站推广| 上往建站| 网站制作| 网站设计| 域名注册| 网络营销| 网站维护|

企业邮箱| 虚拟主机| 网络建站| 网站服务| 网页设计| 网店美工设计| 网站定制| 企业建站| 网站设计制作| 网页制作公司|

400电话办理| 书生商友软件| 葬花网| 调温纤维| 海洋馆运营维护| 北京保安公司| 殡仪馆服务| 殡葬服务| 苏州殡葬一条龙| 朝阳殡葬| 苏州殡葬服务|

预约专家

欢迎您免费咨询,请填写以下信息,我们收到后会尽快与您联系

  

服务热线:400-111-6878