关于林锐高质量编程的一个修正
这段时间用C++编写二维数组小程序。对照林书,觉得其第七章内存管理的例子有些小问题,现举例如下。
//(1)
void func4(char **p, int no)
{
for (int i = 0; i < no; i++)
{
p[i] = (char *) new char [20];
sprintf(p[i], "this is test4 %i", i);
}
}
//(2)
void func0(char* &p)
{
p = (char *) new char [20];
sprintf(p, "this is test0");
}
在林书中采用了第一种方式返回在函数中分配的内存,但是就如上程序中可以看出,对其操作可以对指针p[0]到p[no-1]分配内存,不受限制,只要no取得足够大。
而第二种方式就不允许这么做,看作者原书含义,应该采用第二种方式在函数中分配内存更为贴切,第一种方式虽然也没错。