C++高质量编程点滴,第1张

C++高质量编程点滴,第2张

1.您需要一个函数来将数组赋值给等差数列,并且您将在函数外部使用它。

不合理:

int * get array(int n)
{
int * p = new int[n];
for(int I = 0;I < n;i++)
{
p = I;
}
return p;
}


合理:

void GetArray( int *p,int n)
{
for(int I = 0;I < n;i++)
{
p = I;
}
}
分辨率:

检查内存泄漏的方法是检查完全匹配的应用和释放。在函数中应用,对外发布,会导致代码一致性差,维护困难。而且你写的函数,你自己可能用不到,别人也不会知道怎么正确使用。如果是DLL的导出函数,你在不同平台使用,会导致系统崩溃。解决方法是在函数调用之外申请内存,函数只复制数据。

第二,你需要写一个类来为你管理一个指针。这个类将封装应用程序内存、释放和指针的其他基本操作。

不合理:

A类
{
public:
A(void){ }
~ A(void){ delete[]m _ pPtr;}
void Create(int n){ m _ pPtr = new int[n];}
private:
int * m _ pPtr;
};

合理:

class A
{
public:
A(void):m _ pPtr(0){ }
~ A(void){ Clear();}
bool Create(int n){ if(m _ pPtr)返回falsem _ pPtr = new int[n];return ture}
void Clear(void){ delete[]m _ pPtr;m _ pPtr = 0;}
private:
int * m _ pPtr;
};

解析:

不合理的代码是当你反复调用Create时,会造成内存泄漏。解决方法是在new之前判断指针是否为0。为了有效地执行这个判断,指针必须在构造的时候初始化,并且应该在这个类中添加一个Clear函数来释放内存。

第三,遵循上一个问题的Create函数,你现在需要根据传入的参数做一些复杂的算法运算,给应用的数组赋值。

不合理:

bool Create(int *a,int n)
{
if(m _ pPtr)
返回false
m _ pPtr = new int[n];
for(int I = 0;I < n;i++)
{
m _ pPtr = 3/a;
}
返回true
}

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » C++高质量编程点滴

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情