c
aaaaatiger
Ai powered-IOT Traffic Realisation
展开
-
C语言陷阱和缺陷[1]
[译序] 那些自认为已经“学完”C语言的人,请你们仔细读阅读这篇文章吧。路还长,很多东西要学。我也是……[概述] C语言像一把雕刻刀,锋利,并且在技师手中非常有用。和任何锋利的工具一样,C会伤到那些不能掌握它的人。本文介绍C语言伤害粗心的人的方法,以及如何避免伤害。[内容] 0 简介 1 词法缺陷 1.1 = 不转载 2007-04-14 15:09:00 · 1438 阅读 · 0 评论 -
明晰C++内存分配的五种方法的区别
2006-04-24 16:54 作者: 出处: bbs 责任编辑:>方舟 在C++中,内存分成5个区,他们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。 栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清楚的变量的存储区。里面的变量通常是局部变量、函数参数等。 堆,就是那些由new分配的内存块,他们的释放编译器不去管,由我们的应用程序去控制,一转载 2008-09-24 00:44:00 · 665 阅读 · 1 评论 -
ELF文件格式(中文)(一)
elf文件格式-- 另一文本方式的elf文档 write by breadbox Email:breadbox@muppetlabs.com 译:alert7 from m4in security team http://www.patching.net isearthling 19:45 2001-5-16 译者注: 由于翻译者水平有限(包括技术水平和翻译水平:(),所以 有些地方或许比较转载 2008-09-23 00:46:00 · 1173 阅读 · 0 评论 -
a.out的文件结构
1.程序编译连接之后的位置分配如果不指定编链后的文件名,linux会自动产生一个a.out的文件,大概是汇编输出的意思,实际上这是链接之后的输出,而不是汇编之后的输出,之所以这样是个历史遗留问题。a.out文件除去魔术数字等东西,我们最关心的是程序中各个段的分配。一个程序文件一般会分成这样几个区域:text,data,bss段text指的是程序文本文件data指的是所有的经过初始化原创 2008-09-22 18:04:00 · 2417 阅读 · 0 评论 -
Win32平台下的微软C编译器(cl.exe for 80×86)的对齐策略
Win32平台下的微软C编译器(cl.exe for 80×86)的对齐策略: 1) 结构体变量的首地址能够被其最宽基本类型成员的大小所整除; 备注:编译器在给结构体开辟空间时,首先找到结构体中最宽的基本数据类型,然后寻找内存地址能被该基本数据类型所整除的位置,作为结构体的首地址。将这个最宽的基本数据类型的大小作为上面介绍的对齐模数。 2) 结构体每个成员相对于结构体首地址的偏移量(offs原创 2008-08-31 12:43:00 · 1110 阅读 · 1 评论 -
经常crash,加上了printf,它就不会crash了.
1.时序问题(可以加mutex保护) 2.cpu资源抢占问题,可以加入sleep缓解 3.hardware处理能力问题,hardware或某芯片的处理能力没有你想象的那么快,如camera sensor,需要加入一些等待 4.其它(个人认为跟缓冲无关,又不是所以的hareware都跟它有关) _interupt int OperAt(int a) { i原创 2008-08-31 13:26:00 · 1301 阅读 · 0 评论 -
ADS ADS1.2 内存字节对齐
在ADS环境下,有“ALIGN” 、“__align(x)” 、“__packed”关键字用于字节对齐处理。ALIGN用于汇编语言,__align(x)用于C语言,__packed用于不使用字节对齐。 预编译指令 #pragma pack(X)不行 可以直接在定义前用type qualifier __align()eg:__align(4) struct{ int i原创 2008-05-01 23:57:00 · 1395 阅读 · 0 评论 -
a gcc compiler optimization problem from my colleague
function-section data-section Could any one tell what exactly these two option do. I have not beenable to understand why we use them because as per the gcc man page,these options increase the si原创 2008-04-12 18:04:00 · 906 阅读 · 0 评论 -
堆和栈的区别
来源:http://www.eetop.cn/blog/html/72/2972_itemid_2256.html一、预备知识—程序的内存分配 一个由c/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 2、堆区(heap) — 一般由程序员分配释放, 若程序员不释原创 2007-12-08 15:34:00 · 899 阅读 · 0 评论 -
C99与C89比较汇总
GCC支持C99, 通过 --std=c99 命令行参数开启,如: 代码:gcc --std=c99 test.c 现在的最新版C标准是C99吗,和以前的相比(K&R C 2nd描述的),有什么变化吗?现在是C99为最新版本。它增加了一些新的特性,有一些还是C++所不具备的。所作的改变是,void main()已经不能使用,必须指定类型,例如int main()。声明可原创 2007-11-17 12:00:00 · 1432 阅读 · 0 评论 -
memmove 和memcpy有什么区别
void *memcpy( void *to, const void *from, size_t count ); The function memcpy() copies count characters from the array from to the array to. The原创 2007-08-15 20:21:00 · 1187 阅读 · 0 评论 -
memmove
写程序是一种态度(二)四倍速memmovehttp://www.chinaaspx.com/archive/VC/8760.htm原型:extern void *memmove(void *dest, const void *src, unsigned int count); 用法:#include 功能:由src所指内存区域复制count个字节到dest所指内存原创 2007-08-15 20:13:00 · 971 阅读 · 0 评论 -
Linux 汇编语言开发指南(二)
三、Hello World! 真不知道打破这个传统会带来什么样的后果,但既然所有程序设计语言的第一个例子都是在屏幕上打印一个字符串 "Hello World!",那我们也以这种方式来开始介绍 Linux 下的汇编语言程序设计。 在 Linux 操作系统中,你有很多办法可以实现在屏幕上显示一个字符串,但最简洁的方式是使用 Linux 内核提供的系统调用。使用这种方法最大的好处是可以直接转载 2008-09-23 00:40:00 · 687 阅读 · 0 评论