C C++
wangweixaut061
这个作者很懒,什么都没留下…
展开
-
【VS2005】调试与直接运行的区别(待调查)
【VS2005】调试与直接运行的区别原创 2011-05-16 13:08:00 · 972 阅读 · 0 评论 -
开发 PHP 扩展 DLL
windows下开发php扩展网上很多资料都说需要Cygwin,其实完全可以不必安装该东东。没错,是可以在linux下生成骨架后拷到windos下来用,但是,如果没有linux环境呢?什么,装虚拟机?我晕,你咋又绕回去了- -! 除了编译外,shell环境主要就是为了生成扩展的骨架,其实骨架已经在php源码包中了了,我们只需要把相关名字替换一下即可使用。准备:1、php源码转载 2011-12-13 17:28:50 · 1198 阅读 · 0 评论 -
内存管理内幕【C/C++ 实现自己的内存管理机制】
简介: 本文将对 Linux™ 程序员可以使用的内存管理技术进行概述,虽然关注的重点是 C 语言,但同样也适用于其他语言。文中将为您提供如何管理内存的细节,然后将进一步展示如何手工管理内存,如何使用引用计数或者内存池来半手工地管理内存, 以及如何使用垃圾收集自动管理内存。http://www.ibm.com/developerworks/cn/linux/l-memory/转载 2011-12-14 23:08:32 · 441 阅读 · 0 评论 -
使用不同版本的 so 文件
两个版本的 so 的 API 没有变动的话,可以直接使用软连接:ln -s 例如:/home/wwang 目录下有一个可执行文件 exec 依赖 ww.so.1,而现有库 /usr/lib/ww.so.2,1. 则可以在 /home/wwang 下建立以软连接:ln -s ww.so.2 ww.so.12. 执行的时候 export LD_LIBRARY_PATH=·pwd·原创 2011-12-15 10:48:20 · 2047 阅读 · 0 评论 -
【编译】windows 下依赖 zlib 库的项目编译不通过
win7-32bit 编译 php-5.2.9,vc6命令行进入PHP目录,先执行"C:\Program Files\Microsoft Visual Studio\VC98\Bin\VCVARS32.BAT"设置VC6环境变量,然后执行buildconf.bat执行:cscript /nologo configure.js --enable-pdo --disable-odbc原创 2011-12-23 14:19:49 · 2186 阅读 · 0 评论 -
【STL】map
Map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候,在编程上提供快速通道。这里说下map内部数据的组织,map内部自建一颗红黑树(一种非严格意义上的平衡二叉树),这颗树具有对数据自动排序的功能,所以在map内部所有的数据都是有序的,后边我们会见识到有转载 2012-02-13 16:19:21 · 391 阅读 · 0 评论 -
自增运算符(++)
int main(){int i = 3;printf("(i++) + (i++) = %d, i = %d\n", (i++) + (i++), i);i = 3;printf("(i++) + (++i) = %d, i = %d\n", (i++) + (i++), i);i = 3;printf("(++i) + (i++) = %d, i = %d\n",原创 2012-02-29 11:06:06 · 1077 阅读 · 0 评论 -
【linux】多进程、多线程编程
linux下进程 (一) 理解Linux下进程的结构 Linux下一个进程在内存里有三部份的数据,就是“数据段”,“堆栈段”和“代码段”,其实学过汇编语言的人一定知道,一般的CPU象I386,都有上述三种段寄存器,以方便操作系统的运行。“代码段”,顾名思义,就是存放了程序代码的数据,假如机器中有数个进程运行相同的一个程序,那么它们就可以使用同一个代码段。 堆栈段转载 2011-12-06 22:17:33 · 2798 阅读 · 0 评论 -
【linux C】gcc编译c程序出现“__gxx_personality_v0”
(一)注意:是c程序。 很不幸地,我遭遇这个问题让我花去了一两个小时去找它的原因。在VC甚至TC2.0下编译都没有什么问题的c代码,到了gcc就出了这么一条错误,实在是让人郁闷。网上查了一下,没解决问题。只知道“__gxx_personality_v0”的错误信息表示试图用gcc编译c++的代码而产生错误。网上给出的解决方案多是在编译时加上“-lstdc++”参数,也就是把gcc当作g转载 2012-02-29 15:46:13 · 1342 阅读 · 0 评论 -
【C++】基类指针可以指向派生类对象,派生类指针不可以指向基类对象
举个例子有个people类是基类,成员有姓名和身份证号,有个派生类学生student,添加了成员学号,现在如果你说的这个情况成立student的指针----pt让他指向people成员t,则t只有两个成员变量,而*pt有3个,现在pt->学号这个变量在pt下是可以使用的,但它指向的实体却没有这个变量,所以出错,于是C++直接就避免了这样的隐式转换转载 2012-03-05 09:58:19 · 3039 阅读 · 0 评论 -
【C++】this 指针
百度百科的解释 http://baike.baidu.com/view/2140472.htm原创 2012-03-05 10:10:04 · 389 阅读 · 0 评论 -
【C++】C++ 虚函数的实现机制
1、c++实现多态的方法其实很多人都知道,虚函数在c++中的实现机制就是用虚表和虚指针,但是具体是怎样的呢?从more effecive c++其中一篇文章里面可以知道:是每个类用了一个虚表,每个类的对象用了一个虚指针。具体的用法如下:class A{public: virtual void f(); virtual void g();private转载 2012-03-05 09:56:02 · 407 阅读 · 0 评论 -
浮点数在计算机中存储方式
转自:http://www.cnblogs.com/jillzhang/archive/2007/06/24/793901.html 作者: jillzhang 联系方式:jillzhang@126.com 本文为原创,转载请保留出处以及作者, 谢谢 C语言和C#语言中,对于浮点类型的数据采用单精度类型(float)和双精度类型(double)来转载 2012-03-06 14:46:46 · 438 阅读 · 0 评论 -
size_t, wchar_t, int, long, void *
linux32:linux64:sizeof(void *) = 8, sizeof(int) = 4, sizeof(size_t) = 8sizeof(wchar_t) = 4, sizeof(long) = 8windows32:windows64:原创 2012-03-13 15:24:22 · 524 阅读 · 0 评论 -
计算机中有无符号数的表示方法
反码:正数的反码为原码,负数的反码是原码符号位外按位取反补码: 正数的补码为原码,负数的反码是反码+1在计算机中用补码表示数据的原因:如果二进制第一位是0的话, 代表正数, 1的话代表负数. 比如 -1的表示方法是(以8位数字为例.) 10000001 这就是-1的表示方法, 第一个1就是符号位. 这种表示方法有一个致命的缺点, 有两种方法可以表示0(000000转载 2013-12-16 17:07:37 · 3242 阅读 · 0 评论 -
register
1、register修饰符暗示编译程序相应的变量将被频繁地使用,如果可能的话,应将其保存在CPU的寄存器中,以加快其存储速度。例如下面的内存块拷贝代码,/* Procedure for the assignment of structures, */ /* if the C compiler doesn't support this feature */ #ifdef NOSTRU转载 2011-12-02 09:26:23 · 525 阅读 · 0 评论 -
代码变成可执行程序期间,编译器做了那些事?
1. 怎么就在编译时确定了 sizeof 的大小了?2.编译时确定的东西?3.运行时确定的东西? C语言的编译链接过程要把我们编写的一个c程序(源代码)转换成可以在硬件上运行的程序(可执行代码),需要进行编译和链接。编译就是把文本形式源代码翻译为机器语言形式的目标文件的过程。链接是把目标文件、操作系统的启动代码和用到的库文件进行组织形成最终生成可执行代码的过程。过程图解转载 2011-12-02 10:06:29 · 2642 阅读 · 0 评论 -
一个困惑的类层次设计根据:回调函数,避免向下类型转换(转)
class Element{virtual void doSomething();};ElementTree{Element * getElementInTree() {return data[i];}void setElementInTree(Element* e) { e->doSomething(); i++; data[i]=e;}private:Ele转载 2011-11-28 10:44:31 · 695 阅读 · 0 评论 -
重写子类中的赋值操作符
class Base { public: Base(int initialValue = 0): x(initialValue) {} private: int x; class Derived: public Base { public: Derived(int initialValue) : Base(initialValue), y转载 2011-06-08 22:30:00 · 1229 阅读 · 0 评论 -
重写子类中的赋值操作符
class Base { public: Base(int initialValue = 0): x(initialValue) {} private: int x; class Derived: public Base { public: Derived(int initialValue) : Base(initialValue), y转载 2011-06-08 22:30:00 · 554 阅读 · 0 评论 -
[转载]内存区划分、内存分配、常量存储区、堆、栈、自由存储区、全局区
一. 在c中分为这几个存储区1.栈 - 由编译器自动分配释放2.堆 - 一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收3.全局区(静态区),全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。- 程序结束释放4.另外还有一个专门放常量的地方。- 程序结束释放转载 2011-06-16 23:52:00 · 555 阅读 · 0 评论 -
逗号运算符,逗号表达式解析
逗号运算符和逗号表达式2007年04月16日 星期一 21:04 C语言提供一种特殊的运算符——逗号运算符。用它将两个表达式连接起来。如: 3+5,6+8称为逗号表达式,又称为“顺序求值运算符”。逗号表达式的一般形式为 表达式1,表达式2逗号表达式的求解过程是:先求解表达式1,再求解表达式2。整转载 2011-06-17 00:37:00 · 1921 阅读 · 0 评论 -
C语言复杂声明解析
C语言所有复杂的指针声明,都是由各种声明嵌套构成的。如何解读复杂指针声明呢?右左法则是一个既著名又常用的方法。不过,右左法则其实并不是C标准里面的内容,它是从C标准的声明规定中归纳出来的方法。C标准的声明规则,是用来解决如何创建声明的,而右左法则是用来解决如何辩识一个声明的,两者可以说是相反的。右左法则的英文原文是这样说的:The right-left rule: Start readin原创 2011-06-17 00:42:00 · 10636 阅读 · 8 评论 -
C++ 重载赋值运算符
C++ 重载赋值运算符转载 2011-04-25 15:15:00 · 9985 阅读 · 0 评论 -
C语言中运算符和表达式
C语言中运算符和表达式数量之多, 在高级语言中是少见的。正是丰富的运算符和表达式使C语言<a id="vad_9" class="vLink1" style="border-bottom: #ff3366 1px dotted; margin: 0px; color: #ff3366; font-size: 1em; cursor: pointer; text-decoration: underl转载 2011-06-17 00:19:00 · 1542 阅读 · 0 评论 -
函数指针详解
1. 指向普通函数的指针 很简单,如下的例子可以说明基本格式和用法:int int_add(int a, int b) { return (a+b); } int int_sub(int a, int b) { return (a-b); } int (*int_operator)(int, int) = in转载 2011-06-17 00:47:00 · 715 阅读 · 0 评论 -
阅读优秀的代码是提高个人能力的捷径
编者按:原文作者Alan Skorkin是一名软件开发人员,他在博客中分享对软件开发相关的心得,其中有很多优秀的文章,本文是其中的另一篇。Alan认为:阅读优秀代码是提高开发人员修为的一种捷径。以下是全文。我突然想起来,很多程序员都讨厌阅读代码。来吧,承认吧! 每个人都喜欢编写代码,编代码是件趣事。 另一方面,阅读代码也不容易。 不仅不容易,而且还非常枯燥,咱们要面对这一事实。任何不是你的代码转载 2011-06-28 01:09:00 · 663 阅读 · 0 评论 -
VS2005 常见问题分析
VS2005 常见问题分析原创 2011-05-06 15:16:00 · 792 阅读 · 0 评论 -
头文件互相包含
有时候当头文件包含互相重叠时,可能会出现下面两个错误,而且成双成对出现(IDD_VIEW是我的对话框ID):error C2065: 'IDD_VIEW' : undeclared identifiererror C2057: expected constant expr转载 2011-08-09 16:58:09 · 1285 阅读 · 0 评论 -
数组名称和指针变量加减后,实际指向的值(转)
int main(int argc, char ** argv) { int a[5] = {1, 2, 3, 4, 5}; int *ptr = (int*)(&a + 1); printf("%d, %d", *(a + 1), *(ptr - 1)); return 0; } 这个程序打印出的结果应该是 2, 5。 因为在指针移位时,是以sizeof(转载 2011-11-01 17:58:27 · 737 阅读 · 0 评论 -
【C++】友元类和友元函数(转)
C++总结 友元类和友元函数 友元函数: 友元函数是可以直接访问类的私有成员的非成员函数。它是定义在类外的普通函数,但它必须在类体内进行声明,它不属于任何类,声明时只需在友元的名称前加上关键字friend,其格式如下: friend 类型 函数名(形式参数); 友元函数的声明可以放在类的私有部分,也可以放在公有部分,它们是没有区别的,转载 2011-11-02 21:36:51 · 410 阅读 · 0 评论 -
详解virtual table(转)
C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术,虚函数技术,要么是试图做到在编译时决议,要么试图做到运行时决议。关于虚函数的使用方法,我在这里不做过转载 2011-11-28 16:12:49 · 1742 阅读 · 0 评论 -
内存数据大小端表示方法
大端模式,是指数据的高位,保存在内存的低地址中,而数据的低位,保存在内存的高地址中,这样的存储模式有点儿类似于把数据当作字符串顺序处理:地址由小向大增加,而数据从高位往低位放;例子:0000430: e684 6c4e 0100 1800 53ef 0100 0100 00000000440: b484 6c4e 004e ed00 0000 0000 0100 0转载 2013-12-16 17:12:35 · 940 阅读 · 0 评论