自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(10)
  • 收藏
  • 关注

转载 Linux进程使用内存的基本流程---Linux用户进程是如何释放内存的

见图1从图中我们可以看出,进程的堆,并不是直接建立在Linux的内核的内存分配策略上的,而是建立在glibc的堆管理策略上的(也就是glibc的动态内存分配策略上),堆的管理是由glibc进行的。所以我们调用free对malloc得到的内存进行释放的时候,并不是直接释放给操作系统,而是还给了glibc的堆管理实体,而glibc会在把实际的物理内存归还给系统的策略上做一些优化,以便优化用户任

2015-07-29 14:44:25 398

转载 变长数组的应用

1、前言    今天在看代码中遇到一个结构中包含char data[0],第一次见到时感觉很奇怪,数组的长度怎么可以为零呢?于是上网搜索一下这样的用法的目的,发现在linux内核中,结构体中经常用到data[0]。这样设计的目的是让数组长度是可变的,根据需要进行分配。方便操作,节省空间。2、data[0]结构经常遇到的结构形状如下:struct buffer{ i

2015-04-10 19:52:47 476

转载 用户空间与内核的交互---NETLINK

关于netlink,相信玩过上层开发的人并不陌生,尤其是经常穿梭于用户空间和内核之间的开发,前面我们说过在用户空间与内核空间的交互有ioctl 、proc 等,而netlink又有它独特的地位和作用.我开始接触netlink是开始于去实现一个恢复出厂值的按键.当然先要实现一个中断,然后再去通知上层做相应的恢复配置文件的操作,当时是参考了前辈的代码,稍作修改,才搞定,对于当时的netlink的广

2014-10-21 16:48:49 539

转载 Linux环境下段错误的产生原因及调试方法小结

最近在Linux环境下做C语言项目,由于是在一个原有项目基础之上进行二次开发,而且项目工程庞大复杂,出现了不少问题,其中遇到最多、花费时间最长的问题就是著名的“段错误”(Segmentation Fault)。借此机会系统学习了一下,这里对Linux环境下的段错误做个小结,方便以后同类问题的排查与解决。1. 段错误是什么一句话来说,段错误是指访问的内存超出了系统给这个程序所设定的内存空间,

2014-10-21 16:46:41 309

转载 Linux嵌入式系统的内存管理方法详细介绍

阅读提示:嵌入式系统中的快速性,可靠性和高效性是系统中对内存分配的重要要求。 1 嵌入式系统中对内存分配的要求 ①快速性。嵌入式系统中对实时性的保证,要求内存分配过程要尽可能地快。因此在嵌入式系统中,不可能采用通用操作系统中复杂而完善的内存分配策略,一般都采用简单、快速的内存分配方案。当然,对实性要求的程序不同,分配方案也有所不同。例如,VxWorks采用简单的最先匹配如立即聚合方法;VR

2013-11-19 19:12:18 1843

转载 strcpy strncpy strlcpy

好多人已经知道利用strncpy替代strcpy来防止缓冲区越界。但是如果还要考虑运行效率的话,也许strlcpy是一个更好的方式。1. strcpystrcpy 是依据 /0 作为结束判断的,如果 to 的空间不够,则会引起 buffer overflow。strcpy 常规的实现代码如下(来自 OpenBSD 3.9):char * strcpy(char *to, const

2013-11-15 16:05:33 436

原创 函数里定义的字符串常量与字符指针

今天产品同事问了个文件系统相关的问题,平台这边的文件系统自己组织,定义了个结构体数组,数组里面有个字符指针,在产品调用相关接口函数时将函数名(其实是个字符串)赋给该指针。产品同事说这样有问题,说没有给指针申请空间,就直接用了,他这么一问我也懵了,平台一直在用,没有问题啊,百度了一下有如下解答: 问题:请问函数里定义的字符串常量会随着函数结束时自动消亡吗?如下代码:char *G

2013-09-29 15:05:29 1317

原创 关中断/禁调度/信号量/原子变量的区别和用法

有人问及关中断和保护全局变量的问题,还有人以为开中断时会导致cpu不停地查看有没有中断而变慢,我答及:关于中断使cpu变慢的问题:1、cpu的中断管理和指令执行(运算器)是两套硬件,他们互相独立又有关联。运算器忠实地执行由取指器取得的指令,而中断管理器是通过影响取指地址来使cpu执行中断处理程序的。2、无论中断是否允许,运算器都按自己的节奏工作,无须花时间去查询是否由中断到达,因此,cpu

2013-09-14 13:10:14 2457

原创 静态库的特性

在一般的开发中,我们会把代码分模块组织,编译的时候也会按模块把该模块的所有目标文件(.o)打包成一个静态库文件(即.a),之所以这样做有以下几个优点: 1.在最后链接生成可执行文件时,对.a中的链接是以它里面的.o为单位进行的,如果某个.o里面定义的外部符号未被引用,则该.o就不会被链接到最终的可执行文件中; 2.方便将标准库打包发布,否则在不同.c里定义的符号需要以多个.o的形式

2013-09-12 14:24:04 344

原创 数据结构中定义宏

一种c语言中的特殊用法: typedef struct tagIBC_RPC_MESSAGE_CB{ ulong_t ulSequence;    /* 消息的序号    */ ulong_t ulSendType;    /* 同步取 or 异步取   */#define IBC_RPC_SEND_TYPE_SYNC   0#define IBC_RPC_SEND_T

2013-08-27 17:29:03 582

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除