语言
ckanhw
这个作者很懒,什么都没留下…
展开
-
C++总结
C陷阱和缺陷1.赋值符优先级比逻辑比较低,赋值表达式的结果为赋值后的结果2.编译器扫描符号使用贪心法,尽量选择最长字符的符号串,如a---理解为a -- -而不是a - --3.为兼容老版本编译器,不同符号之间最好加空格,如a=-1可能理解为a =- 1,应该改为a = -14.老版本编译器,8进制数以0开始,后面可以加超过8的数字,新版本会在编译时提示出错5.单引号中放多个字...原创 2020-02-13 00:52:48 · 130 阅读 · 0 评论 -
如何获取虚表指针
32位机器,虚表指针在对象开始位置的情况下:int* p = (int*)this;int f = *p; void* pf ...原创 2020-02-13 00:51:08 · 396 阅读 · 0 评论 -
为什么printf只能用_cdecl调用约定
1. 什么是调用约定?调用约定(Calling conventions)和type representations, 名称修饰(name mangling)同是应用二进制接口(application binary interface ,ABI)概念,理解为C++或其它语言需要遵守的转换为汇编语句的一套规则。调用约定规定函数参数入栈顺序,和栈清理方式。2. 调用约定分类?cdecl...原创 2020-02-13 00:49:59 · 464 阅读 · 0 评论 -
尝试规避"FORTIFY_SOURCE: FD_SET: file descriptor >= FD_SETSIZE"
Android 5.0及以上,select调用会检查fd大小,是否超过1024,如果超过就会提示:FORTIFY_SOURCE: FD_SET: file descriptor >= FD_SETSIZE. Calling abort().然后崩溃,检查的代码在:/bionic/libc/bionic/__FD_chk.cppextern "C" int __FD_IS原创 2016-12-08 10:35:40 · 7471 阅读 · 0 评论 -
C++如何获取类成员的偏移
如何获取类成员变量的移植,网上有个方法:struct A { int i;};&((A*)0)->i; 原理如下:&((A*)0)的地址是0,所以&((A*)0)->i的地址为&((A*)0)->i减去0,即成员变量的地址。之所以可以这样,是因为没有内存的分配读写,这段代码的计算在编译时就完成,只要编译不出错就可以。最近查看Android的art ru原创 2016-12-28 14:50:39 · 755 阅读 · 0 评论 -
新手易犯的错误:C++类指针成员初始化
还记得工作两年多跳槽到北京某浏览器公司,从后端j2ee改行做了c++,虽然以前学过,但是实践做起项目来,实在是艰难,尤其是整个webkit项目非常庞大,一时间手足无措。那时候遇到了很多莫名其妙的问题,记忆犹新的就是这个类指针成员初始化的问题。简单的描述就是:类的简单变量成员并不会自己初始化为0,所以一般需要在构造函数列表中显示初始化为0,如果不这么做,而在其它地方又做了非0判断,或直接原创 2017-09-19 19:57:54 · 6048 阅读 · 1 评论 -
结构体内存对齐
为什么要内存对齐?1、某些硬件平台只能在某些地址处取某些特定类型的数据,否则抛出硬件异常。2、性能原因,为了访问未对齐的内存,处理器需要作两次内存访问;而对齐的内存访问仅需要一次访问。对齐规则? 每个特定平台上的编译器都有自己的默认“对齐系数”(GCC默认为4, GCC 64位机器默认为8)。 基本规则: 1、数据成员对齐规则:结构(struct)(或联合(union))的数据成...原创 2018-02-09 12:05:16 · 153 阅读 · 0 评论 -
css line-height总结
line-height定义http://www.w3school.com.cn/cssref/pr_dim_line-height.asp前端大牛的解释https://www.cnblogs.com/qiangspecial/p/4126842.html这里有两点注意:1. "原始数字值指定了一个缩放因子,后代元素会继承这个缩放因子而不是计算值"line-height是可...原创 2019-02-15 10:24:57 · 137 阅读 · 0 评论