c技术
文章平均质量分 78
liangkaiming
这个作者很懒,什么都没留下…
展开
-
理解c中堆栈的概念
一般认为在c中分为这几个存储区 <br />1、栈 - 由编译器自动分配释放 <br />2、堆 - 一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收 <br />3、全局区(静态区),全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。 - 程序结束释放 <br />4、另外还有一个专门放常量的地方。 - 程序结束释放 <br /> 在函数体中定义的变量通常是转载 2010-09-10 14:48:00 · 828 阅读 · 0 评论 -
printf函数的内涵以及造成的严重内存问题
<br />问题的引出:在某型号的核心网络交换机设备中,为调试方便,实现了一个把内存内容从终端打印的功能,也就是dump memory,屏幕的左边显示十六进制,右边以ASCII形式显示,用过UltraEdit的十六进制编辑功能朋友应该都很了解。显示ASCII码部分的实现,是这样的:<br />printf (string_ascii); /* string_ascii指向待显示的内存段 */<br />结果,这个函数调用引起了一个致命的问题,原本用于调试的功能,居然造成了整机重启。<br /> <br />原创 2010-09-19 17:10:00 · 11211 阅读 · 2 评论 -
va_list、va_start、va_arg、va_end的原理与使用
概述<br />由于在C语言中没有函数重载,解决不定数目函数参数问题变得比较麻烦;即使采用C++,如果参数个数不能确定,也很难采用函数重载.对这种情况,有些人采用指针参数来解决问题.下面就c语言中处理不定参数数目的问题进行讨论. 定义<br />大家先看几宏.<br />在VC++6.0的include有一个stdarg.h头文件,有如下几个宏定义:<br />#define _INTSIZEOF(n) ((sizeof(n)+sizeof(int)-1)&~(sizeof(int) - 1) ) /原创 2010-09-19 14:52:00 · 830 阅读 · 0 评论 -
想成为嵌入式程序员应知道的0x10个基本问题
<br /> C语言测试是招聘嵌入式系统程序员过程中必须而且有效的方法。这些年,我既参加也组织了许多这种测试,在这过程中我意识到这些测试能为面试者和被面试者提供许多有用信息,此外,撇开面试的压力不谈,这种测试也是相当有趣的。<br /> 从被面试者的角度来讲,你能了解许多关于出题者或监考者的情况。这个测试只是出题者为显示其对ANSI标准细节的知识而不是技术技巧而设计吗?这是个愚蠢的问题吗?如要你答出某个字符的ASCII值。这些问题着重考察你的系统调用和内存分配策略方面的能力吗?这标志着出题者也许转载 2010-09-20 14:43:00 · 839 阅读 · 0 评论 -
C程序优化
<br /> 对程序进行优化,通常是指优化程序代码或程序执行速度。优化代码和优化速度实<br />际上是一个予盾的统一,一般是优化了代码的尺寸,就会带来执行时间的增加,如<br />果优化了程序的执行速度,通常会带来代码增加的副作用,很难鱼与熊掌兼得,只<br />能在设计时掌握一个平衡点。<br />一、程序结构的优化<br />1、程序的书写结构<br />虽然书写格式并不会影响生成的代码质量,但是在实际编写程序时还是应该尊循一<br />定的书写规则,一个书写清晰、明了的程序,有利于以后的维转载 2010-09-20 15:40:00 · 1153 阅读 · 0 评论 -
assert宏的用法及原理
<br />assert宏的原型定义在<assert.h>中,其作用是如果它的条件返回错误,则终止程序执行,原型定义: <br />#include <assert.h> <br />void assert( int expression ); <br />assert的作用是现计算表达式 expression ,如果其值为假(即为0),那么它先向stderr打印一条出错信息, <br />然后通过调用 abort 来终止程序运行。 <br />请看下面的程序清单badptr.c: <br />#inclu原创 2010-09-21 16:03:00 · 7978 阅读 · 0 评论 -
不同体系结构的处理器的大小端模式
<br /> 所谓的大端模式,是指数据的低位(就是权值较小的后面那几位)保存在内存的高地址中,而数据的高位,保存在内存的低地址中,这样的存储模式有点儿类似于把数据当作字符串顺序处理:地址由小向大增加,而数据从高位往低位放; <br /> 所谓的小端模式,是指数据的低位保存在内存的低地址中,而数据的高位保存在内存的高地址中,这种存储模式将地址的高低和数据位权有效地结合起来,高地址部分权值高,低地址部分权值低,和我们的逻辑方法一致。 <br /> 为什么会有大小端模式之分呢?这是因为在计算原创 2010-09-28 11:18:00 · 2588 阅读 · 0 评论