
计算机编程
文章平均质量分 70
trunk0813
这个作者很懒,什么都没留下…
展开
-
堆、栈及静态数据区详解
五大内存分区 在C++中,内存分成5个区,他们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。 栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清楚的变量的存储区。里面的变量通常是局部变量、函数参数等。 堆,就是那些由new分配的内存块,他们的释放编译器不去管,由我们的应用程序去控制,一般一个new就要对应一个delete。如果程序员没有释放掉,那么在程序结束后,转载 2008-11-14 16:29:00 · 311 阅读 · 0 评论 -
ANSI C标准函数库
ANSI C标准函数库absread()读磁盘绝对扇区函数原形:int absread(int drive,int num,int sectnum,void *buf)功能:从drive指定的驱动器磁盘上,sectnum指定的逻辑扇区号开始读取(通过DOS中断0x25读取)num个(最多64K个)扇区的内容,储存于buf所指的缓冲区中。参数:drive转载 2008-11-19 13:18:00 · 941 阅读 · 0 评论 -
如何在WINDOWS下运行UNIX程序和GNU程序
如何在WINDOWS下运行UNIX程序和GNU程序1 引言 今天程序开发人员面临的最大问题就是如何使他们的应用程序支持各种不同的平台,如何使用户能够在不同的平台下不作任何修改地就能使用他们的应用程序。众所周知,Linux 操作系统和其它基于 UNIX 的操作系统一直是国际上使用广泛又非常重要的OS。但在中国,微软的 Windows OS 却占领着巨大转载 2008-11-19 13:19:00 · 2328 阅读 · 0 评论 -
大内高手—惯用手法
大内高手—惯用手法 转载时请注明出处和作者联系方式:http://blog.youkuaiyun.com/absurd作者联系方式:李先静 更新时间:2007-7-9 《POSA》中根据模式粒度把模式分为三类:架构模式、设计模式和惯用手法。其中把分层模式、管道过滤器和微内核模式等归为架构模式,把代理模式、命令模式和出版-订阅模式等归为设计模式,而把引用计数等归为惯用手法转载 2008-11-19 13:12:00 · 357 阅读 · 0 评论 -
VI/VIM键盘快捷图
VI/VIM键盘快捷图转载 2008-11-19 13:22:00 · 436 阅读 · 0 评论 -
GCC——C程序是如何编译成的[转]
GCC——C程序是如何编译成的[转]作者:deven摘要: 在windows环境,我们有集成开发环境(IDE),使得我们对编译器了解的很少。当我们专向linux时需要在命令行下编译自己的程序需要对编译器的命令行参数比较熟悉。而如果是做嵌入开发构建自己的操作系统时失去了系统平台,需要我们对编译的过程以及可执行文件的内部结构有所了解。本文讲述了如何编转载 2008-11-19 13:24:00 · 650 阅读 · 0 评论 -
大内高手—栈/堆
大内高手—栈/堆 转载时请注明出处和作者联系方式:http://blog.youkuaiyun.com/absurd作者联系方式:李先静 更新时间:2007-7-9l 栈栈作为一种基本数据结构,我并不感到惊讶,用来实现函数调用,这也司空见惯的作法。直到我试图找到另外一种方式实现递归操作时,我才感叹于它的巧妙。要实现递归操作,不用栈不是不可能,而是找不出比它更优雅的方式。 尽管大多数编译器转载 2008-11-19 13:09:00 · 392 阅读 · 0 评论 -
大内高手—共享内存与线程局部存储
大内高手—共享内存与线程局部存储 转载时请注明出处和作者联系方式:http://blog.youkuaiyun.com/absurd作者联系方式:李先静 更新时间:2007-7-9城里的人想出去,城外的人想进来。这是《围城》里的一句话,它可能比《围城》本身更加有名。我想这句话的前提是,要么住在城里,要么住在城外,二者只能居其一。否则想住在城里就可以住在城里,想住在城外就可以住在城外,你转载 2008-11-19 13:11:00 · 447 阅读 · 0 评论 -
大内高手--调试手段及原理
大内高手--调试手段及原理 转载时请注明出处和作者联系方式:http://blog.youkuaiyun.com/absurd作者联系方式:李先静 更新时间:2007-7-9 知其然也知其所以然,是我们《大内高手》系列一贯做法,本文亦是如此。这里我不打算讲解如何使用boundschecker、purify、valgrind或者gdb,使用这些工具非常简单,讲解它们只是多此一举。相反,我们要研究转载 2008-11-19 13:13:00 · 492 阅读 · 0 评论 -
[转]通过覆盖__atexit进行缓冲区溢出攻击
[转]通过覆盖__atexit进行缓冲区溢出攻击原作者: Pascal Bouchareine 原文: specific proof of concept with statically linked binaries and heap overflows>> 翻译整理:alert7 主页: http://www.xfocus.org/ 译者注转载 2008-11-19 13:13:00 · 691 阅读 · 2 评论 -
关于edian大小端模式
关于edian大小端模式一、引子 在各种计算机体系结构中,对于字节、字等的存储机制有所不同,因而引发了计算机通信领域中一个很重要的问题,即通信双方交流的信息单元(比特、字节、字、双字等等)应该以什么样的顺序进行传送。如果不达成一致的规则,通信双方将无法进行正确的编/译码从而导致通信失败。目前在各种体系的计算机中通常采用的字节存储机制主要有两种:big转载 2008-11-19 13:16:00 · 574 阅读 · 0 评论 -
关于Debug和Release之本质区别
关于Debug和Release之本质区别关于Debug和Release之本质区别的讨论本文主要包含如下内容:1. Debug 和 Release 编译方式的本质区别2. 哪些情况下 Release 版会出错2. 怎样“调试” Release 版的程序 一、Debug 和 Release 编译方式的本质区别Debug 通常称为调试版本,它包含调试信息,并转载 2008-11-19 13:18:00 · 658 阅读 · 1 评论 -
C程序中的内存管理
相比静态地分配内存空间,使用动态内存分配具有明显的优势:1, 分配空间的大小够精确: 设想一个读取用户输入行的程序, 如果使用静态分配的数组作为buffer, 那么, 你如何确定该数组的长度呢? 太大或太小都不合适. 因为你无法事先知道用户输入字符串的长度. 而使用动态内存分配就精准多了.2, 静态分配的空间大小无法更改, 而动态分配的内存大小是可调的.所以, 理解C语言中的动态内存分配对于转载 2008-11-19 13:14:00 · 317 阅读 · 0 评论 -
大内高手—常见内存错误
大内高手—常见内存错误 随着诸如代码重构和单元测试等方法引入实践,调试技能渐渐弱化了,甚至有人主张废除调试器。这是有道理的,原因在于调试的代价往往太大了,特别是调试系统集成之后的BUG,一个BUG花了几天甚至数周时间并非罕见。 而这些难以定位的BUG基本上可以归为两类:内存错误和并发问题。而又以内存错误最为普遍,即使是久经沙场的老手,也有时也难免落入陷阱。前事不忘,后世之师,了解这些常见的错误转载 2008-11-19 13:12:00 · 445 阅读 · 0 评论 -
大内高手—内存管理器
大内高手—内存管理器 转载时请注明出处和作者联系方式:http://blog.youkuaiyun.com/absurd作者联系方式:李先静 更新时间:2007-7-9作为一个C程序员,每天都在和malloc/free/calloc/realloc系列函数打交道。也许和它们混得太熟了,反而忽略了它们的存在,甚至有了三五年的交情,仍然对它们的实现一无所知。相反,一些好奇心未泯的新手,对它们的实现有着浓厚的兴趣转载 2008-11-19 13:11:00 · 415 阅读 · 0 评论 -
堆栈理解
堆栈在计算机领域,堆栈是一个不容忽视的概念,但是很多人甚至是计算机专业的人也没有明确堆栈其实是两种数据结构。要点:堆:顺序随意栈:先进后出堆和栈的区别 一、预备知识—程序的内存分配 一个由c/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 2、堆区(heap) — 一般由程序员分配释放转载 2008-11-14 15:30:00 · 413 阅读 · 0 评论 -
malloc后,再free 却出错
昨天研究了,斐波那契函数,如下代码:#include "stdio.h"#include "malloc.h"long phponach(int n);unsigned long phbonache(int n);int main(int argc, char* argv[]){ int nRet= 0; nRet = phponach(10); printf("%d ",nRet);转载 2008-11-14 18:54:00 · 1293 阅读 · 1 评论 -
字节对齐详解
一.什么是字节对齐,为什么要对齐? 现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定类型变量的时候经常在特定的内存地址访问,这就需要各种类型数据按照一定的规则在空间上排列,而不是顺序的一个接一个的排放,这就是对齐。 对齐的作用和原因:各个硬件平台对存储空间的处理上有很大的不同。一些平台对某些特定类型的转载 2008-11-18 17:31:00 · 266 阅读 · 0 评论 -
大内高手—序
大内高手—序 转载时请注明出处和作者联系方式:http://blog.youkuaiyun.com/absurd作者联系方式:李先静 更新时间:2007-7-9我一直认为作为一个在linux下工作的C程序员,若对内存有深刻的认识,不但程序的性能会更高,运行更稳定,编程速度也会更快。反之亦有相反的效果,有时一些内存错误让你摸不着头脑,不但大大降低开发速度,开发出来的软件稳定性也值得怀疑。 为了提高组员的编程水转载 2008-11-19 13:09:00 · 383 阅读 · 0 评论 -
大内高手—全局内存
大内高手—全局内存 转载时请注明出处和作者联系方式:http://blog.youkuaiyun.com/absurd作者联系方式:李先静 更新时间:2007-7-9有人可能会说,全局内存就是全局变量嘛,有必要专门一章来介绍吗?这么简单的东西,还能玩出花来?我从来没有深究它,不一样写程序吗?关于全局内存这个主题虽然玩不出花来,但确实有些重要,了解这些知识,对于优化程序的时间和空间很有帮助。因为有好几转载 2008-11-19 13:10:00 · 416 阅读 · 0 评论 -
[转]通过覆盖__atexit进行缓冲区溢出攻击的补充
[转]通过覆盖__atexit进行缓冲区溢出攻击的补充整理:alert7 mail:alert7@21cn.com 主页: http://www.xfocus.org 前言: 如果您看过《通过覆盖__atexit进行缓冲区溢出攻击》,请一定继续看把 这篇文章看完,因为..... 内容细节: 今天又重温了一遍warning3翻译整理的《通过覆盖.dt转载 2008-11-19 13:14:00 · 419 阅读 · 0 评论 -
C语言高级测试(一)
C语言高级测试(一)原文出处:http://www.programmersheaven.com/articles/pathak/article2.htm原文有些微小的错误,我已经将之改正.整个测试遵循以下的约定:u 假定在所有的程序中必须的头文件都已经被正确包含。考虑如下的数据类型:u char 为1个字转载 2008-11-19 13:16:00 · 492 阅读 · 0 评论 -
C语言高级测试(二)---答案
C语言高级测试(二)---答案Answer With Detailed Explanation_____________________________________________________________ Answer 1.The answer is (b)volatile variable isnt affected by转载 2008-11-19 13:16:00 · 491 阅读 · 0 评论 -
深入浅出VA函数的使用技巧
深入浅出VA函数的使用技巧作者:钟小兵 发文时间:2005.04.11 本文主要介绍可变参数的函数使用,然后分析它的原理,程序员自己如何对它们实现和封装,最后是可能会出现的问题和避免措施。VA函数(variable argument function),参数个数可变函数,又称可变参数函数。C/C++编程中,系统提供给编程人员的va函数很少。*pr转载 2008-11-19 13:17:00 · 737 阅读 · 0 评论 -
复杂指针解析
因为C语言所有复杂的指针声明,都是由各种声明嵌套构成的。如何解读复杂指针声明呢?右左法则是一个既著名又常用的方法。不过,右左法则其实并不是C标准里面的内容,它是从C标准的声明规定中归纳出来的方法。C标准的声明规则,是用来解决如何创建声明的,而右左法则是用来解决如何辩识一个声明的,两者可以说是相反的。右左法则的英文原文是这样说的:The right-l转载 2008-11-19 13:08:00 · 266 阅读 · 0 评论 -
大内高手—内存模型
大内高手—内存模型 转载时请注明出处和作者联系方式:http://blog.youkuaiyun.com/absurd作者联系方式:李先静 更新时间:2007-7-9了解linux的内存模型,或许不能让你大幅度提高编程能力,但是作为一个基本知识点应该熟悉。坐火车外出旅行时,即时你对沿途的地方一无所知,仍然可以到达目标地。但是你对整个路途都很比较清楚的话,每到一个站都知道自己在哪里,知道当地的风土人情转载 2008-11-19 13:09:00 · 448 阅读 · 0 评论 -
如何理解C run-time library (C运行时库)
如何理解C run-time library (C运行时库)注: 以下内容部分引自CSND中相关讨论的帖子,并结合自己的理解整理而成。仅供参考。1)运行时库就是 C run-time library,是 C 而非 C++ 语言世界的概念:取这个名字就是因为你的 C 程序运行时需要这些库中的函数.2)C 语言是所谓的“小内核”语言,就其语言本身来说很小(不多的关键字,程序流程控制,数据类型等转载 2009-10-15 14:08:00 · 327 阅读 · 0 评论