
C/C++
文章平均质量分 71
lin_style
俺是农民。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
返回静态地址 g++和VC的一点不同
在调试一个地址时无意中发现 g++代码,inet_nota情况也一样,后来为了验证就换成如下 [code="java"]char *fun_test(char* c) { static char s_buff[10]; char *p_buff=s_buff; strcpy(p_buff, c); return s_buff; } //main函...2008-07-03 10:50:02 · 97 阅读 · 0 评论 -
python和C/C++的互相调用 VC
[color=blue][b]在C++中对Python进行调用,这里以VC2008为例。[/b][/color] 一个整体的思路就是,在这种互相调用的库或者函数中,我们做的所有事目的是让它们各自明白对方。既然PYTHON是C写的,那么它的调用肯定跟普通的LIB,DLL差不多。 首先安装PYTHON 2.5,在VC2008的Project->Properties, C/C++和LIN...2009-03-25 17:00:27 · 612 阅读 · 0 评论 -
STL,我对它的思考和学习(纯粹谈思想,不谈语法技术)
[color=blue]首先,[/color]学习一个东西一顶要弄清楚它产生的背景,和他的特性在哪儿。先来看STL的特性,编 译期的动态。也就是说,根据类型来推导出代码的语法生成。如果你够聪明,你肯定会联想到 C/C++一些静态编译的东西,比如全局,比如static,比如enum,那么是否可以利用STL特性和这 些东西结合起来,弄出有意思的东西呢?比如让enum的值等于一个模板函...2009-09-21 00:07:03 · 103 阅读 · 0 评论 -
局部变量和指针混淆的一段内存泄露
[code="java"]class CListNode { public: CListNode(); CListNode(int i); int m_Data; CListNode *m_Next; }; CListNode::CListNode():m_Data(0), m_Next(0) { } CListNode::CListNode(int i...2008-02-24 12:46:35 · 173 阅读 · 0 评论 -
内联函数 与 宏
内联函数 与 宏 目的:完全处于性能的考虑 机制:将被调用函数的函数代码直接地整个插入到函数被调用处 两种表现: 1. 关于类的成员函数 类外使用时,需要指定关键字inline 类内使用时,声明的同时提供函数体,inline不是必须的 2. 关于普通函数 需要加inline 原则:ODR原则,最好将内联函数都定义在一个头文件 ...2008-03-02 00:53:47 · 96 阅读 · 0 评论 -
又是一个指针地址操作的错误
本篇无学习价值。纯粹记录案件的发生。甚入!! 浓缩如下 [code="java"] int *pI; int i; pI = new int[10]; cout2009-04-27 14:19:14 · 137 阅读 · 0 评论 -
疱基类/派生类,巧用读取偏移解决一个不同派生类读取同个值的问题
[size=medium] 有奇怪需求的代码,都是历史的问题遗留。在这个时候,就需要借助语言的一些特性。就比如这次遇到的:在一个基类接口函数里,调用一个取得GetMaxLife的函数。因为扩充的需求,人物里加入了一些Life的数值,而怪物类没有。不幸的是它们都继承自这个基类。那么问题就转变成,如何在这个基类接口函数里,识别到不同的派生类做不同的事。想到了这么几个方法 1:Get...原创 2009-12-27 21:13:58 · 141 阅读 · 0 评论 -
几个不同逻辑间参数传递弱化的技巧
1.线程间 HANDLE WINAPI CreateThread( __in LPSECURITY_ATTRIBUTES lpThreadAttributes, __in SIZE_T dwStackSize, __in LPTHREAD_START_ROUTINE lpStartAddress, __in ...2010-07-24 23:25:03 · 140 阅读 · 0 评论 -
strtok三段代码分析
unsigned char map[32]; /*str:原始字符串,ctrl:分割字符串*/ /* Set bits in delimiter table */ do { map[*ctrl >> 3] |= (1 << (*ctrl & 7)); ...2010-12-13 00:09:43 · 148 阅读 · 0 评论 -
linxu(C)的链表风格封装 VS STL中的迭代器
起因是因为今天组里有个同事在设计链表erase接口的时候出了点问题。不敢说哪种好哪中坏,先贴代码比较下:遍历删除。 linux下的 list_for_each_safe(p, listhead...) //p是迭代节点,listhead表示要遍历的节点头 { if( ..... ) { list_delete(p); } ...2010-08-18 20:54:35 · 118 阅读 · 0 评论 -
条款22: 尽量用“传引用”而不用“传值”
条款22: 尽量用“传引用”而不用“传值” 这章讲的东西基本都在掌握范围内,简单概括下 首先是效率问题 比如 [code="java"]class person { public: person(); // 为简化,省略参数 // ~person(); ...2008-02-17 20:54:48 · 168 阅读 · 0 评论 -
条款21: 尽可能使用const
防止你做错事的冲动"const"!! 先提下有个陷阱,比如 typedef pC char* void f1(pC const p)//好象是反的,记不清了 并不是所希望的char* const //指针常量,而是const char *p //常量指针; 例子好象是这样的吧,可以搜索typedef陷阱关键字。 那么在函数接口中像 [code="java"]class widg...2008-02-10 21:26:47 · 140 阅读 · 0 评论 -
对const操作来分配一个数组空间错误
[code="java"] #include int main(void) { const int i = 2; const int a[i] = {1, 2}; ...2008-01-28 22:43:26 · 143 阅读 · 0 评论 -
对Effective条款学习 12。尽量使用初始化而不要在构造函数里赋值
对Effective条款学习 12。尽量使用初始化而不要在构造函数里赋值 在构造一个类时,对数据成员进行赋值通常有两种方法实现,一种是使用成员初始化列表,一种是在构造函数体内赋值。当然,在很多情况下 选择类似的方法时,看重的不是他的效率问题,更多的是看他的设计需求上。 先来看这个类 template class namedptr { public: namedptr(c...2008-01-29 16:33:42 · 127 阅读 · 0 评论 -
条款11: 为需要动态分配内存的类声明一个拷贝构造函数和一个赋值操作符
条款11: 为需要动态分配内存的类声明一个拷贝构造函数和一个赋值操作符 这是非常重要的一条,经常会导致一些内存的泄露,如以下这段代码所示: // 一个很简单的string类 class string { public: string(const char *value); ~string(); ... // 没有...2008-02-01 15:46:55 · 95 阅读 · 0 评论 -
条款16: 在operator=中对所有数据成员赋值
条款16: 在operator=中对所有数据成员赋值 [code="java"]class base { public: base(int initialvalue = 0): x(initialvalue) {} virtual void print(); private: int x; }; void base::print() { cout...2008-02-01 18:08:12 · 106 阅读 · 0 评论 -
条款14: 确定基类有虚析构函数
条款14: 确定基类有虚析构函数 对于这个问题来说,我想直接举这个例子就比较好解释了。 [code="java"]class enemytarget { public: enemytarget() { ++numtargets; } enemytarget(const enemytarget&) { ++numtargets; } ~enemytarget() { --numta...2008-02-02 21:58:28 · 94 阅读 · 0 评论 -
条款15: 让operator=返回*this的引用
条款15: 让operator=返回*this的引用 这里的描述不想太多 标准格式是 string& operator=(const string& rhs); 尝试下const string& operator=(const string& rhs); 如果是 int i1, i2, i3; (i1=i2)=i3; //i3给i1出错 string& operator=(s...2008-02-02 21:59:09 · 133 阅读 · 0 评论 -
重新巩固下基础
[code="java"]#include #include #include //visual leak detected //经visual leak detected测试,工作良好,无内存泄露 using namespace std ; class base { public: base(); base(int pi); virtual ~base();...2008-02-03 19:38:18 · 143 阅读 · 0 评论 -
条款19: 分清成员函数,非成员函数和友元函数
条款19: 分清成员函数,非成员函数和友元函数 很前几章一样,先提供一个类的代码 //伪代码 [code="java"]class rational { public: rational(int numerator = 0, int denominator = 1); int numerator() const; int denominator() const; ...2008-02-07 22:26:41 · 212 阅读 · 0 评论 -
条款20: 避免public接口出现数据成员
条款20: 避免public接口出现数据成员 其实我以前一直不明白,为什么数据成员放在PRIVATE里面,不让外面直接访问;为什么JAVABEAN要那么严格规定。发现自己对 实例了解太少了。 一个非常非常简单的例子 [code="java"]class speeddatacollection { public: void addvalue(int speed); /...2008-02-07 22:27:15 · 163 阅读 · 0 评论 -
这算fread的BUG吗吗吗
环境:VC2008 SP1 ReadMe.txt内容:1111;2222;3333; const int BUFFER = 1024*20; int _tmain(int argc, _TCHAR* argv[]) { char buffer[BUFFER]; memset(buffer, 0, BUFFER); FIL...2010-10-26 17:03:05 · 178 阅读 · 0 评论