-
原型void *realloc(void *ptr, size_t size);
1. 参数ptr和size均不为0,重新调整内存大小,并将新的内存指针返回,并保证最小的size的内容不变;
2. 参数ptr为NULL,但size不为0,那么行为就等于malloc(size);
3. 参数size为0,则realloc的行为为free(ptr);
4. ... -
2011-05-22
C++ 编译器的函数编译流程 - [C/C++]
C++中的类型查找过程相对简单,基本上就是名字查找,这里不再介绍。
对于 .cpp 文件中调用的一个函数 ( 或成员函数 ), 编译器主要做了下面三件事情 :
1 名字查找 . 先在所在编译单元中可见名字实体中进行名字查找 .(1) 类成员函数优先 ( 对象所在的类 -> 基类 )... -
~classname()
{
if ( __uncaught_exception() )
{
try
{
&n... -
2011-05-10
32bit程序在64bit操作系统下处理重定向细节 - [C/C++]
转载:http://blog.csdn.net/Code_GodFather/archive/2010/07/04/5711933.aspx
1. 64bit操作系统的重定向机制以及目的
在64bit操作系统中,为了无缝兼容32bit程序的运行,64bit的Windows操作系统采用重定向机制。目的是为了能让32bit程序在 64bit的操... -
2011-05-05
工程配置 Inline - [C/C++]
Inline Function Expansion:
Only __inline(/Ob1) 有声明inline的才inline
Any Suitable(/Ob2) 有声明inline或者短函数 都inline
-
2011-03-23
lua尾调用造成的死循环 - [LUA]
尾调用:提高效率和节省空间,具体怎样才算是一个尾调用,请看LUA程序设计
昨晚DK服务器发现lua一个错误使用“尾调用”方式:比如
(1)
function a()
...
return a()
end
a() --这样的尾调用(即:又调用自己),没终止条件,会使用LUA死循环,这样的写法和wh... -
2011-03-09
使0或空字符串也为false - [LUA]
在lua中默认是nil false才为假,这个和c/C++中的0也为假,不一样,造成在C/C++程序员在编码LUA C接口 不方便。可以通过修改使其达到对0或空字符串都认为是假。
具体做法:
在lobject.h下找l_isfalse宏
原先:#define l_isfalse(o) (ttisnil(o) || (ttisboolean... -
禁止新增全局变量 用这个方法可以禁止LUA 误把local写成全局而造成“逻辑”的内存泄漏,即对应用层来说,根本没用,但是LUA GC 不知道的泄漏,这个和C/C++所谓的泄漏是两码事。
方法:
设置全局表(_G)的元表的__newindex方法。
globalmt = {};
gl... -
2011-01-24
LUA垃圾回收部分代码阅读笔记 - [LUA]
转载:http://blog.csdn.net/1fei/archive/2009/03/08/3970023.aspx
阅读代码时,可以从singlestep开始
如果是使用GC,可以从lua_gc开始
内部机制:当前使用内存达到了垃圾回收的内存上限时,就表示需要垃圾回收了GCthreshold totalbytes;
一直奇怪局部变量怎么垃圾... -
2010-12-31
C++PImpl作用 - [C/C++]
PImpl (private implementation) 其主要作用是解开类的使用接口和实现的耦合。
例子:
头文件中:
1 class CSample
2 {
3 private:
4 class CImpl;
5 &nb...







