摘要: 一、编译和连接 一般来说,如果库的头文件不在 /usr/include 目录中,那么在编译的时候需要用 -I 参数指定其路径。由于同一个库在不同系统上可能位于不同的目录下,用户安装库的时候也可以将库安装在不同的目录下,所以即使使用同一个库,由于库的路径的 不同,造成了用 -I 参数指定的头文件的路径也可能不同,其结果就是造成了编译命令界面的不统一。如果使用 -L 参数,也会造成连接界面的不统一。编译和连接界面不统一会为库的使用带来麻烦。 为了解决编译和连接界面不统一的问题,人们找到了一些解决办法。其基本思想就是:事先把库的位置信息等保存起来,需要的时候再通过特定的工具将其中有用的 信息提取.. 阅读全文
posted @ 2011-08-23 15:04 ybtyoyo 阅读(4094) 评论(0) 推荐(0) 编辑
摘要: malloc/free是c/C++语言的标准库函数;new/delete是c++的运算符,都可以用申请动态内存和释放内存。 对于非内部数据类型的对象而言,光用malloc/free无法满足动态对象的要求。对象在创建是要自动执行Constructor函数,对象在消亡之前要自动执行Destructor函数。由于malloc/free是库函数不是运算符,不在编译器控制权限之内,不能够把Constructor及Destructor任务加于malloc/free. 阅读全文
posted @ 2011-08-11 09:46 ybtyoyo 阅读(158) 评论(0) 推荐(0) 编辑
摘要: 虚表(virtual table)The virtual table is actually quite simple, though it’s a little complex to describe in words. First, every class that uses virtual functions (or is derived from a class that uses virtual functions) is given it’s own virtual table. This table is simply a static array that the compil 阅读全文
posted @ 2011-08-09 17:42 ybtyoyo 阅读(398) 评论(0) 推荐(0) 编辑
摘要: 如果一个类拥有资源(堆,即分配的动态内存),当这个类的对象发生复制时复制了资源的过程就叫深拷贝,而存在资源(堆,即分配的动态内存)但并未复制资源的情况叫浅拷贝。编译器会为类提供一个默认拷贝构造函数就是一个浅拷贝。 浅拷贝存在的问题:类体内的成员需要开辟动态内存来存放资源,复制时如果用浅拷贝只会拷贝指向动态内存的指针,并未实际重新分配一块内存来存放资源,在对象虚构时,会出现两次释放同一块内存,导致运行错误。 浅拷贝: 1 #include "stdafx.h" 2 #include <iostream> 3 4 class Test 5 { 6 public: 7 阅读全文
posted @ 2011-08-08 23:50 ybtyoyo 阅读(208) 评论(0) 推荐(0) 编辑
摘要: 1、指针会分配内存区域,而引用不会。2、指针与引用在初始化时不同,具体:指针可以初始化为空,引用则不可以。3、指针指向值可以改变,但是引用一旦跟某个对象绑定,则无法改变。(程序在编译时分别将指针和引用添加到符号表上,符号表上记录的是变量名及变量所对应地址。指针变量在符号表上对应的地址值为指针变量的地址值,而引用在符号表上对应的地址值为引用对象的地址值。符号表生成后就不会再改,因此指针可以改变指向的对象(指针变量中的值可以改),而引用对象不能改。) 阅读全文
posted @ 2011-08-08 23:32 ybtyoyo 阅读(163) 评论(0) 推荐(0) 编辑
摘要: 在Windows GUI程序可能会有这样的需求: 看到程序运行时print输出的一些信息 1 AllocConsole();//打开控制台窗口以显示调试信息 2 SetConsoleTitleA("Debug Win");//设置标题 3 HANDLE hCon = GetStdHandle(STD_OUTPUT_HANDLE);//获取控制台输出句柄 4 INT hCrt = _open_osfhandle((INT)hCon, _O_TEXT);//转化为C文件描述符 5 FILE * hf = _fdopen( hCrt, "w" );//转化为C 阅读全文
posted @ 2011-03-22 16:54 ybtyoyo 阅读(423) 评论(0) 推荐(0) 编辑
摘要: SVN Working Copy xxx locked 并 cleanup失败之解 :del lock /q/s 阅读全文
posted @ 2011-03-22 16:26 ybtyoyo 阅读(120) 评论(0) 推荐(0) 编辑
摘要: lsof: list open files(列出打开的文件, /usr/sbin/lsof -n | grep tcmalloc)ldd: printshared library dependencies(列出依赖的共享库, ldd a.out)fuser FILE:找出正在使用文件的进程modprobe MODULE:加载模块(modprobe ip_vs)lsmod : 列出系统已经加载的模块(lsmod | grep ip_vs) 阅读全文
posted @ 2011-02-22 11:45 ybtyoyo 阅读(114) 评论(0) 推荐(0) 编辑
摘要: 文件夹隐藏属性变灰,无法修改解决方案:attrib /S /D -s -h target_path  help attrib  显示或更改文件属性。  ATTRIB [+R | -R] [+A | -A ] [+S | -S] [+H | -H] [[drive:] [path] filename] [/S [/D]]  + 设置属性。   - 清除属性。  R 只读文件属性。  A 存档文件属性。  S 系统文件属性。  H 隐藏文件属性。  [drive:][path][filename] 指定要处理的文件属性。  /S 处理当前文件夹及其子文件夹中的匹配文件。  /D 也处 阅读全文
posted @ 2011-02-21 22:33 ybtyoyo 阅读(372) 评论(0) 推荐(0) 编辑
摘要: mysql_use_result与mysql_store_result异同点:   通过mysql_use_result取回结果集时,并没有像mysql_store_result那样实际把结果集读到client. 每行必须通过调用mysql_fetch_row()来取回.server上并没有把结果存储在临时表或者本地的缓冲区中,而是直接从server上读取查询的结果.所以它比mysql_store_result稍微快些,内存使用也相对少些. 这样client分配的内存只需要能满足current row 加上最大可以达到max_allowed_packet字节大小的communication b 阅读全文
posted @ 2011-02-21 15:30 ybtyoyo 阅读(705) 评论(0) 推荐(0) 编辑