- 博客(10)
- 收藏
- 关注
原创 粗解“new”之来龙去脉(四)
我们知道运行一个程序后会进入一个系统调用函数,在vc6里我们可以设置这个函数,windows下可能会是wWinMainCRTStartup,那会不会就是在这里调用的? 我们通过查找源代码证实了就是在这里面调用的: #ifdef _WINMAIN_#ifdef WP
2011-09-21 14:35:31
571
原创 粗解“new”之来龙去脉(三)
我们暂且停止对内存分配的查找,看看这些变量是何时被初始化的,通过查找源代码我们可以看到是在__sbh_heap_init中对它赋值的。HANDLE _crtheap;int __cdecl __sbh_heap_init (void){ if (!(__sb
2011-09-21 14:27:17
857
原创 粗解“new”之来龙去脉(二)
接着往下走看看_heap_alloc_base这个函数#define MAX_ALLOC_DATA_SIZE 0x3f8#define BYTES_PER_PARA 16size_t __sbh_threshold = MAX_ALL
2011-09-21 14:21:02
955
原创 粗解“new”之来龙去脉(一)
使用C++的程序员都很熟悉使用new来分配一块内存,但是new函数具体是怎么工作的?可能很多人都没有花时间去研究,今天花了半天时间,查阅了相关的一些源代码,对它的来龙去脉有了一个初步的了解,写得不是很详细,一个是记录一下,另一个就是抛砖引玉,有兴趣的人可以深入研究。如果有不对的地
2011-09-21 14:11:09
675
原创 常见函数实现
参考mfc下的源文件以及网上的一些代码实现。留着做个参考strcmp比较两个字符串大小int mystrcmp( const char * src, const char * dst ){ int ret = 0 ; while( ! (ret =
2011-08-12 17:02:38
317
原创 Item:明智而审慎的使用pirvate继承
使用private继承后,编译器不会将一个private继承的派生类转换为基类 class Base{}class Derived:private Base{}Base* pBasePointer = new Derived(); // 错
2011-08-12 16:44:07
543
原创 Item:尽可能少做类型转换
C风格类型转换double dValue = 3.3;int nValue = (double)dValue;C++风格类型转换double dValue = 3.3;int nValue = static_cast(dValue);
2011-08-12 14:44:21
639
原创 C预处理器和C库-学习笔记
C预处理器和C库 学习笔记1.常量: #define只进行替换不进行计算#define SQRT(X) X*XSQRT(a+2);直接替换为: a+2*a+2,和预期不同,可以通过加括号来达到预期结果#define SQER(X) (X)*(X)
2011-08-04 14:07:06
376
原创 C++位运算
位运算学习总结位运算作用1. 掩码掩码是某些位设为开(1),而某些位设置为关(0)的位组合ch &= 0xff; //留下ch的最后8位2. 打开位有时需要打开一个值的特定位,同时其他位不变,使用“位或”来实现ch = ch | 0x01;
2011-08-04 13:49:40
406
原创 Perl 基本语法1
一个简单的perl 例子:print "hello world\n";printf("This is %s\n", "John");变量Perl包含三种基本数据类型:标量,数组和关联数组1.标量:用于保存单个值,字符串或数字。以"$
2011-08-02 14:57:17
524
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人