
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 · 89 阅读 · 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 · 594 阅读 · 0 评论 -
STL,我对它的思考和学习(纯粹谈思想,不谈语法技术)
[color=blue]首先,[/color]学习一个东西一顶要弄清楚它产生的背景,和他的特性在哪儿。先来看STL的特性,编译期的动态。也就是说,根据类型来推导出代码的语法生成。如果你够聪明,你肯定会联想到C/C++一些静态编译的东西,比如全局,比如static,比如enum,那么是否可以利用STL特性和这些东西结合起来,弄出有意思的东西呢?比如让enum的值等于一个模板函...2009-09-21 00:07:03 · 95 阅读 · 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 · 166 阅读 · 0 评论 -
内联函数 与 宏
内联函数 与 宏 目的:完全处于性能的考虑机制:将被调用函数的函数代码直接地整个插入到函数被调用处 两种表现:1. 关于类的成员函数类外使用时,需要指定关键字inline类内使用时,声明的同时提供函数体,inline不是必须的2. 关于普通函数需要加inline 原则:ODR原则,最好将内联函数都定义在一个头文件 ...2008-03-02 00:53:47 · 88 阅读 · 0 评论 -
又是一个指针地址操作的错误
本篇无学习价值。纯粹记录案件的发生。甚入!!浓缩如下[code="java"] int *pI; int i; pI = new int[10]; cout2009-04-27 14:19:14 · 130 阅读 · 0 评论 -
疱基类/派生类,巧用读取偏移解决一个不同派生类读取同个值的问题
[size=medium] 有奇怪需求的代码,都是历史的问题遗留。在这个时候,就需要借助语言的一些特性。就比如这次遇到的:在一个基类接口函数里,调用一个取得GetMaxLife的函数。因为扩充的需求,人物里加入了一些Life的数值,而怪物类没有。不幸的是它们都继承自这个基类。那么问题就转变成,如何在这个基类接口函数里,识别到不同的派生类做不同的事。想到了这么几个方法1:Get...原创 2009-12-27 21:13:58 · 128 阅读 · 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 · 132 阅读 · 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 · 139 阅读 · 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 · 108 阅读 · 0 评论 -
条款22: 尽量用“传引用”而不用“传值”
条款22: 尽量用“传引用”而不用“传值”这章讲的东西基本都在掌握范围内,简单概括下首先是效率问题比如[code="java"]class person {public: person(); // 为简化,省略参数 // ~person();...2008-02-17 20:54:48 · 151 阅读 · 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 · 131 阅读 · 0 评论 -
对const操作来分配一个数组空间错误
[code="java"]#include int main(void) { const int i = 2; const int a[i] = {1, 2}; ...2008-01-28 22:43:26 · 135 阅读 · 0 评论 -
对Effective条款学习 12。尽量使用初始化而不要在构造函数里赋值
对Effective条款学习12。尽量使用初始化而不要在构造函数里赋值在构造一个类时,对数据成员进行赋值通常有两种方法实现,一种是使用成员初始化列表,一种是在构造函数体内赋值。当然,在很多情况下选择类似的方法时,看重的不是他的效率问题,更多的是看他的设计需求上。先来看这个类templateclass namedptr {public: namedptr(c...2008-01-29 16:33:42 · 117 阅读 · 0 评论 -
条款11: 为需要动态分配内存的类声明一个拷贝构造函数和一个赋值操作符
条款11: 为需要动态分配内存的类声明一个拷贝构造函数和一个赋值操作符这是非常重要的一条,经常会导致一些内存的泄露,如以下这段代码所示:// 一个很简单的string类class string {public: string(const char *value); ~string(); ... // 没有...2008-02-01 15:46:55 · 87 阅读 · 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 · 97 阅读 · 0 评论 -
条款14: 确定基类有虚析构函数
条款14: 确定基类有虚析构函数对于这个问题来说,我想直接举这个例子就比较好解释了。[code="java"]class enemytarget {public: enemytarget() { ++numtargets; } enemytarget(const enemytarget&) { ++numtargets; } ~enemytarget() { --numta...2008-02-02 21:58:28 · 88 阅读 · 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 · 122 阅读 · 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 · 129 阅读 · 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 · 201 阅读 · 0 评论 -
条款20: 避免public接口出现数据成员
条款20: 避免public接口出现数据成员其实我以前一直不明白,为什么数据成员放在PRIVATE里面,不让外面直接访问;为什么JAVABEAN要那么严格规定。发现自己对实例了解太少了。一个非常非常简单的例子[code="java"]class speeddatacollection {public: void addvalue(int speed); /...2008-02-07 22:27:15 · 151 阅读 · 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 · 163 阅读 · 0 评论