程序老是出错,后来发现是执行delete这句时出错了。可是这是一个简单的子程序,就一个new和一个delete,看上去并没有问题。
char * p = new char[len];
delete []p;
难道程序中改变了p,加上const,char * const p = new char[len],可是一到delete这句还是出错。最后仔细看了一下程序,char *p = new char[len]这句被写成了char *p = new char(len)。改过来,运行程序,一切正常。
这里如果忘记了写delete可能运行时也不会出错,但是程序运行时将会使用未申请的空间,留下更难发现的BUG。
new char[len]; 申请len[个数]个连续的空间。
new char(len]; 申请一个char大小空间,并用char(int)这个构造函数来初始化这个对象 。
char(len)把内置类型char看作是类来处理,以构造函数形式初始化对象,char = len。
阅读(705) | 评论(0) | 转发(0) |