1、了解new-handler的行为当operator new 抛出异常以反映一个未满足的内存需求之前,他会先调用一个客户指定的错误处理函数,一个所谓的new-handler。为了指定这个“用以处理内存不足”的函数,客户必须调用set_new_handler,那个声明于的一个标准程序库函数:name...
分类:
其他好文 时间:
2014-10-01 20:15:01
阅读次数:
137
MVNO(Mobile Virtaul Network Operator)虚拟网络运营商,没有自己的实体网络,通过租用MNO(Mobile Network Operator)的网络来提供网络服务。
我们知道Spec规定operator之间是通过MCC/MNC (Mobile Country Code/Mobile Network Code)来区分的;而MVNO和对应MNO的MCC/MNC是相同的...
分类:
其他好文 时间:
2014-09-30 13:36:29
阅读次数:
418
一:Background & 相关flow
MTK Operator name display在手机中分成两种类型:
1. Sim卡名称:
根据开机从SIM卡中读取的IMSI去到Spn-conf.xml中(如果是MVNO的卡则是Virtual-spn-conf-by-***.xml中)匹配得到的name,会保存在SIMInfo这个database中,后续sim卡的名称就从此datab...
分类:
移动开发 时间:
2014-09-30 13:03:49
阅读次数:
334
(一)
当我们写下了下面这个语句:
Widget* pw = new Widget;
这个时候,共有两个函数被调用:一个分配内存的operator new,另外一个是Widget的default构造函数。
假设第一个调用成功,第二个却抛出异常。步骤一所分配内存必须取消并恢复旧观,否则会造成内存泄漏。这时,客户没能力归还内存,因为Widget构造函数抛出异常,pw尚未被赋值,客户手上...
分类:
编程语言 时间:
2014-09-30 09:50:32
阅读次数:
250
首先,如下写法:Class A = B;Class A;A = B;并不等价,前者等价于A(B),后者等价于A.operator=(B) 问题源于我想要用类似如下写法完成复制拷贝函数Class(Class &t) { *this = t;} 尝试重载operator=,由于写挂了,或者说是...
分类:
其他好文 时间:
2014-09-30 02:35:21
阅读次数:
205
在阅读linux源代码的时候,我们经常会发现likely和unlikely,这两个宏语句定义在compiler.h下,#definelikely(x) __builtin_expect(!!(x),1)#defineunlikely(x) __builtin_expect(!!(x),0)这里我们需要先了解__builtin_expect:#define__builtin_expect(x,expected_value)(x)所..
分类:
系统相关 时间:
2014-09-29 17:40:51
阅读次数:
321
在阅读linux源代码的时候,我们经常会发现likely和unlikely,这两个宏语句定义在compiler.h下,#definelikely(x) __builtin_expect(!!(x),1)#defineunlikely(x) __builtin_expect(!!(x),0)这里我们需要先了解__builtin_expect:#define__builtin_expect(x,expected_value)(x)所..
分类:
系统相关 时间:
2014-09-29 17:24:01
阅读次数:
256
本节介绍set集合的相关算法,分别是并集set_union,差集set_difference,交集set_intersection和对称差集set_symmetric_difference,这是个函数都提供了两个版本的函数原型:第一个版本是采用默认的排序比较方式 operator<;第二个版本是用户通过仿函数comp自行指定排序方式。注意:这四个算法接受的输入区间都是有序的,输出也是有序的。...
分类:
其他好文 时间:
2014-09-29 16:00:51
阅读次数:
120
(一)
实现一致性operator new必须返回正确的值,内存不足时必须调用new_handling函数,必须有对付零内存的准备,还需要避免不慎掩盖正常形式的new。
void* operator new(std::size_t size) throw(std::bad_alloc) {
using namespace std;
if (size == 0) {
...
分类:
编程语言 时间:
2014-09-29 15:10:31
阅读次数:
168
(一)
为什么有人想要替换operator new 和 operator delete呢?三个常见的理由:
(1)用来检测运用上的错误。
(2)为了强化效果。
(3)为了收集使用上的统计数据。
(二)
下面是个快速发展得出的初阶段global
operator new,促进并协助检测“overruns”或“underruns”。
static const int ...
分类:
编程语言 时间:
2014-09-29 13:37:21
阅读次数:
237