随笔分类 - Under Code
摘要:OK, your program works. You've tested everything in sight. It's time to ship it. So you make a release version. And the world crumbles to dust. You get memory access failures, dialogs don't come up, ...
阅读全文
摘要:Reflection Part 1: Discovery and Execution What Is Reflection? Reflection is a means of discovering information about objects at runtime. This information can be used to execute methods and retrieve ...
阅读全文
摘要:对于一个c/c++程序员来说,内存泄漏是一个常见的也是令人头疼的问题。已经有许多技术被研究出来以应对这个问题,比如 Smart Pointer,Garbage Collection等。Smart Pointer技术比较成熟,STL中已经包含支持Smart Pointer的class,但是它的使用似乎并不广泛,而且它也不能解决所有的问题;Garbage Collection技术在Java中已经比较成...
阅读全文
摘要:注: 以下内容部分引自CSND中相关讨论的帖子,并结合自己的理解整理而成。仅供参考。 0)在Windows平台下,C Runtime Library 的情况如下: 动态连接库 导出库文件 静态连接库 Release msvcrt.dll msvcrt.lib...
阅读全文
posted @ 2007-10-10 19:46
能巴
摘要:站在汇编语言的角度,一个程序分为: 数据段 -- DS 堆栈段 -- SS 代码段 -- CS 扩展段 -- ES 站在高级语言的角度,根据APUE,一个程序分为如下段: text data (initialized) bss stack heap 代码段 -- text text段在内存中被映射为只读,但.data和.bss是可写的。 text段是程序代码段,在AT91库中是表示程序段的大小,它...
阅读全文
posted @ 2007-10-08 22:17
能巴
摘要:一、什么是内存对齐考虑下面的结构:struct foo{char c1;short s;char c2;int i;};假设这个结构的成员在内存中是紧凑排列的,假设c1的地址是0,那么s的地址就应该是1,c2的地址就是3,i的地址就是4。也就是 c1 00000000, s 00000001, c2 00000003, i 00000004。可是,我们在Visual c/c++ 6中写一个简单的程...
阅读全文
摘要:Description: The code you submitted on P4 seems in disorder even if you arrange it well on your own PC.For instance:1. Snapshot of the code on your screen2. But after you submitted itThe reason is tha...
阅读全文
摘要:For a dll, if there is nothing to export, means there is no dllMain, and no def file(maybe more cases), then no lib file will be generated. Easy to understand: lib file is used for other ...
阅读全文
摘要:Kinds of debug informationDebug information formatsGenerating debug information (general)Generating debug information with Visual C++ 6.0Generating debug information with Visual C++.NET 2002 and 2003D...
阅读全文
摘要:程序员在建立一个DLL文件时,链接程序会自动生成一个与之对应的LIB导入文件。该lib文件包含了每一个DLL导出函数的符号名和可选的标识号,以及对应的DLL文件名(但不是完全的路径名),但是并不含有实际的代码。LIB文件在使用其对应dll的应用程序中被用于link阶段,应用程序中的调用函数与LIB文件中导出符号相匹配,这些符号或标识号进入到生成的EXE文件中。当应用程序运行过程中需要...
阅读全文
摘要:许多初学 VC 的朋友也许都为那么一个问题困扰过: 为什么所有的 cpp 都必须 #include "stdafx.h" 也许请教了别的高手之后,他们会告诉你,这是预编译头,必须包含。可是,这到底是为什么呢?预编译头有什么用呢? 这得从头文件的编译原理讲起。其实头文件并不神秘,它的全部作用,就是把自己的所有内容直接“粘贴”到相应的 #include 语句处。如果不相信的话,不妨做...
阅读全文
摘要:我们打开自己的C++程序代码,对某个类的实现做了细小的改动。改动的不是接口,而是类的实现,只是细节部分。然后准备重新生成程序,此情况下编译和链接应该只会花几秒种。因为只是改动了一个类。于是Rebuild或make(或其它类似命令),然而发现所有文件都在被重新编译、重新链接。 问题的原因在于,将接口从实现中分离这方面,C++做得不是很出色。尤其是,C++的类定义中不仅包含接口规范,还有不少实现细...
阅读全文
摘要:当一个c或cpp文件在编译时,预处理器首先递归包含头文件,形成一个含有所有必要信息的单个源文件,这个源文件就是一个编译单元。这个编译单元会被编译成为一个与cpp文件名同名的目标文件(.o或是.obj)。连接程序把不同编译单元中产生的符号联系起来,构成一个可执行程序。经过预处理之后的文件(这个是内存中的临时文件)#include在预处理时被展开,宏也一样 一个经过展开后的.cpp文件就是一个编译单元...
阅读全文
摘要:详解link有些人写C/C++(以下假定为C++)程序,对unresolved external link或者duplicated external simbol的错误信息不知所措(因为这样的错误信息不能定位到某一行)。或者对语言的一些部分不知道为什么要(或者不要)这样那样设计。了解本文之后,或许会有一些答案。 首先看看我们是如何写一个程序的。如果你在使用某种IDE(Visual Studi...
阅读全文
摘要:预处理 预处理语句是一些行首以#开始的特殊语句,例如:#include,#define等就是预处理语句。在编译程序的编译过程中,进行其它编译处理(词法分析、语法分析、代码生成、优化和连接等)之前,先进行这些语句的分析处理。预处理语句使用的目的在于帮助程序员编写出易读、易改、易移植并便于调试的程序。预处理语句主要有三种:宏定义和宏替换、文件包含、条件编译。 预处理语句的作用范围...
阅读全文

浙公网安备 33010602011771号