摘要:
一、operator的重载 这个关键字平时其实几乎不怎么使用,但是偏偏这个关键字和new/delete之类比较孤僻的关键字还经常一起出现,使整个情况看起来更加诡异。之前应该是在看C++ stl库中看到过在类成员中自定义转换函数的,就是希望让一个对象可以转换为bool类型(通常用在if之类的逻辑表达式 阅读全文
摘要:
一、为什么注意到这个问题 之前在使用C风格的cast时候,一个比较烦的地方就是由于转换操作的优先级,导致转换出来的类型需要使用额外的一个括号抱起来,看起来非常臃肿。后来注意到在C++风格的转换符貌似优先级更高,虽然输入量有所增加,但是输入的时候比较流畅,因此看起来也更加流程。tsecer@harry 阅读全文
摘要:
一、为什么遇到这个问题 大致来说,可能是对于日志模块,我们可能需要将用户提供字符串进行格式化之后打印。但是这个用户提供的字符串本身可能千奇百怪,如果其中包含了一些特殊的格式化符号,如果不加特殊处理,则可能会导致一些意外的问题。如果只是"%s"其实还好说,这个如果访问地址非法则直接当场吐核。更坑的是如 阅读全文
摘要:
一、Makefile中的匹配 在Makefile中,可以通过不同的pattern指定不同目标的执行规则,在这个时候就会存在一个哪个target更合适的问题。这里Makefile中引入的是一个stem的概念,从stem中选择最短的。gnu make对该规则的说明A target pattern is 阅读全文
摘要:
零、说明 测试代码基于PhysX_3.4 一、raycast和sweep的特殊性 在场景查询中,raycast/sweep相对于overlap来说有一个重要的特性,就是前两者是有明确方向性的,也就是有一个起点加上一个终点。这个和overlap完全不同,因为overlap是在一个范围内的无差别覆盖。这 阅读全文
摘要:
一、主要的问题 这里主要讨论的是C++中全局/静态局部对象析构函数的执行时机问题。我们知道:全局变量的初始化时在main函数执行之前完成,静态局部变量的初始化是在首次执行到所在函数时执行。但是这些对象的析构函数在什么时候执行,它们在多线程中的表象又是如何?下面首先看下例子:tsecer@harry: 阅读全文
摘要:
一、使用场景 1、局部函数的需求场景及限制 在标准C++(C++11之前)中,是没有局部函数这种语法的。但是在有些场景下,使用局部函数可以极大的简化代码,比方说,输入参数是一个圆(由圆心和半径表示),判断给定的两个点,是否一个在圆外部,一个在内部,此时最好有一个判断一个点是否在圆形内部的函数接口,然 阅读全文
摘要:
一、问题 进程被OOMkill之后退出,在/var/log/messages文件中并没有发现对应的系统日志,那么日志去哪里了呢? 二、内核日志如何获得 内核相关日志相关功能主要集中在kernel\printk\printk.c,虽然功能比较简单,但是在内核代码组织结构中还是享有一个单独的文件夹,可见 阅读全文
摘要:
一、了解该规范的作用 在看C/C++文件对应的反汇编代码中,比较关键的就是找到函数的传入参数,而这个本身并没有神秘之处,完全是ABI已经明确规定过的。这里再次整理下,方便之后查阅。 二、文档 一个比较全的文档 《System V Application Binary Interface AMD64 阅读全文
摘要:
零、C语言中float类型变量定义的诡异性 在C语言中,float类型的定义比较特殊,特别是对于小数点左右侧数字的定义看起来也比较诡异:例如这种".005","10."等类型,问题是这种节省一个数字0,让浮点数看起来非常诡异的意义在哪里?不是不允许这种奇形怪状的定义,让浮点数看起来更加规范它不香吗? 阅读全文