编程语言
Bigengine
A Fan of System Coding,
Linux/C is my mother tongue
展开
-
register, volatile 关键字
register:这个关键字请求编译器尽可能的将变量存在CPU 内部寄存器中而不是通过内存寻址访问以提高效率。为啥要这么麻烦啊?速度!就是因为速度。寄存器其实就是一块一块小的存储空间,只不过其存取速度要比内存快得多。进水楼台先得月嘛,它离CPU 很近,CPU 一伸手就拿到数据了,比在那么大的一块内存里去寻找某个地址上的数据是不是快多了? 详细可以参考: http://c.bianche原创 2016-02-05 16:18:37 · 381 阅读 · 0 评论 -
strcpy 溢出问题
今天编译一个老程序,后来发现了是strcpy溢出了,这个老程序以前是没问题的,但是strcpy 有一些不确定的行为,和memory layout相关,所以有可能现在版本的编译器导致了这个问题。这里详细说一下strcpy溢出问题,简单的说就是strcpy 不考虑目的地址的剩余空间,假设你已经分配了足够的空间, 它会一直赋值到源字符串结尾遇到\0 位置才停止, 所以有可能会触发一些内存原创 2016-02-05 16:14:49 · 1259 阅读 · 0 评论 -
RAND_MAX+1 会溢出
RAND_MAX是C中stdlib.h中宏定义的一个字符常量:一般情况下会定义为#define RAND_MAX Ox7FFF其值最小为0,最大为32767 但是在GNU LIBRARY 定义为2147483647所以用double 转换然后再加1 防止溢出((double) rand() / ((double) RAND_MAX + 1)不能用加原创 2016-02-02 08:16:09 · 766 阅读 · 0 评论 -
shell中同时执行多个命令,逻辑与&&和或||
部分内容参考http://151wqooo.blog.51cto.com/2610898/1174066shell中&&和||的使用方法&&运算符: command1 && command2 &&左边的命令(命令1)返回真(即返回0,成功被执行)后,&&右边的命令(命令2)才能够被执行;换句话说,“如果这个命令执行成功&&那么执行这个命原创 2016-02-03 13:26:08 · 8527 阅读 · 0 评论 -
C语言的STL 库
今天推荐一个函数库glib 注意不是glibc https://developer.gnome.org/glib/一直在抱怨,标准C中为什么没有类似于STL的标准容器,让全世界的程序员在数以万次的重复实现它们。不过,还算走运,有了glib,恶梦在此终结了。glib提供了动态数组、单/双向链表、哈希表、多叉树、平衡二叉树、字符串等常用容器,完全是面向对象设计的,实现得非常精致。原创 2016-02-07 02:52:11 · 7544 阅读 · 1 评论 -
在Linux信号处理中longjmp和siglongjmp
以下是我网上搜索到的,觉得写的还行,记录下来以供以后查阅。相关函数:longjmp, siglongjmp, setjmp 表头文件:#include 函数定义:int sigsetjmp(sigjmp_buf env, int savesigs) 函数说明:sigsetjmp()会保存目前堆栈环境,然后将目前的地址作一个记号,而在程序其他地方调用siglongj转载 2016-02-10 14:54:40 · 1472 阅读 · 0 评论 -
GDB watch if var !=value
有一个内存越界的bug找了2天才找到,最后还是通过借助gdb的帮助,利用watch if 来跟踪某个值什么时候不等于期望值,从而跟踪到越界指令。reproduce a bug 是找到bug的的第一步,然后再通过一些跟踪调试工具来找到原因。这个bug算是我目前为止遇到最复杂的了,因为有一定的随机性,所以一开始要找到产生bug时的seed,然后再reproduce the bug ,如原创 2016-02-18 13:38:32 · 2223 阅读 · 0 评论 -
GSL library 安装 in Ubuntu 14.04 (附gamma 分布的随机函数)
GSL 库对于很多科学运算支持的比较好,比如很多不同的概率分布产生Steps:1. Download gsl-1.6.tar.gz from ftp://ftp.gnu.org/gnu/gsl/2. Extract (tar -zxvf gsl-1.6.tar.gz)3. Create (mkdir) the folder "gsl" where you want to insta原创 2016-03-11 12:34:58 · 2156 阅读 · 0 评论