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;即可


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值