## 概述 对于资源释放,有很多不同的实现方式,不同语言也有不同的惯用方法。 - C语言 :手动管理 - Golang :defer - Python :上下文管理器contexManager - C++ : 作用域和析构函数 - Rust :所有权和drop trait 如果了解上面几种语言的童鞋 ...
分类:
其他好文 时间:
2019-06-25 13:37:24
阅读次数:
128
Java的一个重要优点就是通过垃圾收集器(Garbage Collection,GC)自动管理内存的回收,程序员不需要通过调用函数来释放内存。因此,很多程序员认为Java不存在内存泄漏问题,或者认为即使有内存泄漏也不是程序的责任,而是GC或JVM的问题。其实,这种想法是不正确的,因为Java也存在内 ...
分类:
编程语言 时间:
2019-06-25 13:28:12
阅读次数:
114
问题: 虚函数都是同名 同参数表的吗? 虚函数和普通成员函数的区别 虚函数可以多态,其他不行 在构造函数和析构函数中调用 虚函数 不是多态 派生类还没有初始化好 MyCompare() qsort 怎么表示排序关系 虚函数表地址!! 虚函数?在类的定义中,前面有 virtual 关键字的成员函数就是 ...
分类:
编程语言 时间:
2019-06-23 22:49:12
阅读次数:
161
一.面向过程与面向对象: 面向过程: 重过程:解决问题,考虑的是解决问题的流程 解决问题的思路清晰,但拓展性不强 面向对象: 重对象:解决问题,找到解决问题的对象 解决问题的思路可能不止一条(理解解决问题的难度增加),但拓展性强 二.名称空间: 能产生名称空间的有:文件 | 函数 | 类 能产生名称 ...
分类:
其他好文 时间:
2019-06-18 14:07:21
阅读次数:
96
什么时候回收对象 引用计数法 1、原理:为对象添加一个引用计数器,当对象增加一个引用时计数器加 1,引用失效时计数器减 1。引用计数为 0 的对象可被回收。 2、缺点:无法解决循环引用问题 可达性分析 1、原理:以 GC Roots 为起始点进行搜索,可达的对象都是存活的,不可达的对象可被回收。 2 ...
分类:
其他好文 时间:
2019-06-15 16:05:06
阅读次数:
112
#!python# -*- coding:utf-8 -*-# 场景:# 目的:通过单例实现客户端调用sdk时,sdk中的方法对客户端数据的批处理# 参考:# {# Python单例模式(Singleton)的N种实现 - 知乎# https://zhuanlan.zhihu.com/p/37534... ...
分类:
编程语言 时间:
2019-06-11 20:55:22
阅读次数:
204
运行结果: 构造函数,申请了100个char元素的动态空间拷贝构造函数,保证name指向的是自己单独的内存块构造函数,申请了100个char元素的动态空间lill, age 666赋值函数,保证name指向的是自己单独的内存块John, age 56John, age 56析构函数,释放了100个c ...
分类:
编程语言 时间:
2019-06-10 15:35:38
阅读次数:
107
以上代码的输出结果是A malloc单纯地申请一块内存,不会调用类的构造函数 同样,free释放那块内存,不会调用类的析构函数 至于new的用法,待续 ...
分类:
其他好文 时间:
2019-06-04 22:33:57
阅读次数:
161
在C++中,一个类有八个默认函数: 只是声明一个空类,不做任何事情的话,编译器会自动为你生成一个默认构造函数、一个默认拷贝构造函数、一个默认重载赋值操作符函数和一个默认析构函数。这些函数只有在第一次被调用时,才会被编译器创建,当然这几个生成的默认函数的实现就是什么都不做。所有这些函数都是inline ...
分类:
编程语言 时间:
2019-05-26 19:36:35
阅读次数:
166
一、析构函数 1.析构函数(destructor) 与构造函数相反,当对象脱离其作用域时(例如对象所在的函数已调用完毕),系统自动执行析构函数。析构函数往往用来做“清理善后” 的工作(例如在建立对象时用new开辟了一片内存空间,应在退出前在析构函数中用delete释放)。 2.以C++语言为例:析构 ...
分类:
其他好文 时间:
2019-05-26 11:13:36
阅读次数:
130