linux 编程实用技巧

1:sizeof()参数为指针的问题。

int * i;  int j[10];

sizeof(i);//sizeof参数为指针时,返回指针数据类型所占空间,一般为4(unsigned int 所占byte);

sizeof(j);//sizeof参数为数组时,返回数组所占空间,此时为4*10=40;

2:

多线程中需考虑重入的问题。

localtime()与localtime_r()的区别:localtime 会在栈内存中开辟存储空间,当多个localtime同时执行时,结果存放在同一个内存空间,会出现典型的多线程race condition问题,即同一块栈内存空间被不同线程访问,内存的数据取决于最后一个执行写的线程。

可用localtime_r替代localtime ,即将数据存储在用户空间中。

3:

栈内存优化的问题:

进栈和出栈会消耗大量的资源,一般为function(void *,size_t)模型,传递数据的指针,以及数据的大小,避免资源消耗。

4:

结构中存储字符串的问题,

struct t{ char ta[12]; };

ta存储字符串时,必须先初始化0,并且确保存储的strlen(ptr)长度小于12,以保证正确读取字符串,或者利用3的方式,在函数中传入size_t,确保字符串下标。

5:

在编译安装时,提示缺少库;

如编译 ffmpeg ;./configure --enable libfaac ;

提示

ERROR libfaac not found ;

搜索该库的dev版本;执行apt-cache search libfaac ;打印出

libfaac-dev - AAC audio encoder (development)
libfaac0 - AAC audio encoder (library)

执行 apt-get install libfaac-dev;即可


你可能感兴趣的:(linux)