![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
书海拾贝
luckycjs
这个作者很懒,什么都没留下…
展开
-
《Writing Clear Code---- Microsoft Techniques for Developing Bug-free C Programs 》摘录
3, 讨论了malloc,free,realloc三个函数的“外壳”包装,分别为bool fNewMemory(void **ppv,size_t size); void FreeMemory(void *ppv); bool fResizeMemory(void **ppv,size_t Newsize); #define bGarbage 0xA3bool fNewMemory(voi原创 2005-06-28 11:08:00 · 1441 阅读 · 0 评论 -
溢出专题……缓冲区溢出概念解析
缓冲区溢出,在我看来可以界定为堆栈溢出。一个程序的运行所占用的内存空间分为三个部分(从内存地址的低端到高端分布): 程序段 :存放程序代码以及只读数据 数据段 :存放程序的静态变量,也就是常量 堆栈段 :函数内部的临时变量,函数调用,参数传递以及动态申请的空间,如为指针申请空间。基本上,缓冲区的溢出只(不知道这个词是否准确)发生在堆栈段。通常发生这个情况的可能是C语言中的字符原创 2006-03-09 14:48:00 · 1216 阅读 · 0 评论 -
溢出专题……缓冲区溢出原理
前面基本概念上提到函数调用会用到堆栈,有可能引发缓冲区溢出,现在分析函数调用过程中堆栈上数据的存放过程。如类似程序: void func1(char *pszcName) { char strTmp[10]; strcpy( strTmp, pszcName); } int main( int agrc, char **argv) {原创 2006-03-09 15:39:00 · 1230 阅读 · 1 评论 -
writing clean code 第八部分 剩下来的就是态度问题
l 错误既不会自己产生,也不会自己改正。如果你得到了一个错误报告,但这个错误不再出现了。不要假设测试员发生了幻觉,而要努力查找错误,甚至要恢复程序的老版本。l 不能“以后”再修改错误。这是许多产品被取消的共同教训。如果在你发现错误的时候就及时地更正了错误,那你的项目就不会遭受毁灭性的命运。当你的项目总是保持近似于0个错误时,怎么可能会有一系列的错误呢?l原创 2006-02-13 10:04:00 · 3022 阅读 · 0 评论 -
writing clear code 第七部分 编码中的假象
l 如果你要用到的数据不是你自己所有的,那怕是临时的,也不要对其执行写操作。尽管你可能认为读数据总是安全的,但是要记住,从映射到I/O的存储区读数据,可能会对硬件造成危害。l 每当释放了存储区人们还想引用它,但是要克制自己这么做。引用自由存储区极易引起错误。l 为了提高效率,向全局缓冲区或静态缓冲传递数据也是很吸引人的,但是这是一条充满风原创 2006-02-13 16:34:00 · 3203 阅读 · 0 评论