
Embedded System
chinaplus
说些什么呢?嗯...,还是不说了
展开
-
栈的释放
今天去一家集成电路公司面试,发现平时有很多问题只知道一个大概,没有彻底的搞清楚,还好那个哥们比较nice。记得最清楚的是栈有谁管理? 一般只能是由编译器或者os来管理,网上很多文章是说编译器管理的,但是一般一个程序跑起来之后,编译器怎么对他施加影响呢?到现在我都还是不明白。到网上找了一个关于堆和栈的文章,转贴下。内存分配深入探讨摘要:内存管理向来是C/C++程序设计的一块雷区,大家都不怎么愿意原创 2007-09-12 21:16:00 · 4342 阅读 · 0 评论 -
main函数参数解析
C程序最大的特点就是所有的程序都是用函数来装配的。main()称之为主函数,是所有程序运行的入口。其余函数分为有参或无参两种,均由main()函数或其它一般函数调用,若调用的是有参函数,则参数在调用时传递。main(){...y1=f1(x1,x2);...}f1(int a,int b){....Y2=f2(x3,x4);....}f2转载 2009-01-11 15:23:00 · 4727 阅读 · 1 评论 -
字符溢出问题
程序中偶然会遇到数据溢出的问题,可以判断问题的原因是数据溢出,但是对溢出的具体值是多少很难判断。计算机系统中,数值一律用补码表示。计算机系统中数据分为有符号数和无符号数,有符号数,其最高位为符号位,0:正数,1:负数;所谓补码规则:正数的补码就是其本身,而负数的补码,数据域按位取反,然后加1;int main(int argc, char* argv[]){char a转载 2012-03-11 00:51:09 · 924 阅读 · 0 评论 -
嵌入式系统TUTORIAL
C语言嵌入式系统编程修炼之道——背景篇... 1C语言嵌入式系统编程修炼之道——软件架构篇... 41.模块划分... 42.多任务还是单任务... 53.单任务程序典型架构... 64.中断服务程序... 75.硬件驱动模块... 96.C的面向对象化... 10总结... 10C语言嵌入式系统编程修炼之道——内存操作篇..转载 2006-03-03 10:53:00 · 1184 阅读 · 0 评论 -
volatile 的使用(http://gyy.iteye.com/blog/166678)
一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份。下面是volatile变量的几个例子:1) 并行设备的硬件寄存器(如:状态寄存器) 2) 一个中断服务子程序中会访问到的非自动变量(Non-automatic variables转载 2012-05-27 21:42:14 · 543 阅读 · 0 评论 -
关于内存的几道经典面试题
1.void GetMemory(char *p){ p = (char *)malloc(100);}void Test(void) { char *str = NULL; GetMemory(str); strcpy(str, "hello world"); printf(str);}请问运行Test函数会原创 2012-05-31 16:59:44 · 945 阅读 · 0 评论 -
内存对齐问题
一直困惑自己有两个问题:1.程序为什么要做内存对齐?1.处理器访问内存是粒度为多字节时,如果数据不是在边界处,则,处理器需要分多个时钟周期进行数据的访问。2.增加可移植性。并非所有的处理器都可以访问任何地址,可能出现硬件错误。具体可以参考:http://www.ibm.com/developerworks/library/pa-dalign/2.struct中如转载 2012-03-11 00:39:51 · 496 阅读 · 0 评论 -
C编程中使用全局变量应注意的事项
1尽量用局部变量替代全局变量。如果用局部变量能实现功能,最好用局部变量。2、在函数仅仅只是要用到某个全局变量,而无需改动时,就将全局变量通过形参传递进来,变成局部变量使用。并在定义时使用const。这是避免全局变量在函数中被意外的改动。如在判断语句中将'=='误写成'='。这时首先因为在函数内的是局部变量所以即使出错也不会影响全局变量和其他函数或模块。其次因为定义的是const类型,当发生意外...翻译 2018-12-13 09:52:41 · 1884 阅读 · 0 评论