我有一个 CName 对象指针数组。我有以下构造函数,它将数组初始化为大小一。然后,当我添加一个对象时,我将数组增加 1 并添加新对象。它编译得很好,但是当我尝试打印它们时,我只是收到分段错误错误。你能帮我看看我有没有做错什么吗?
//constructor
Names_Book::Names_Book()
{
grow_factor = 1;
size = 0;
cNames = (CName**)malloc(grow_factor * sizeof(CName*));
cNames[0] = NULL;
}
void Names_Book::addCName(CName* cn)
{
int oldSize = size;
int newSize = size + 1;
CName** newCNames = (CName**)malloc(newSize * sizeof(CName*));
for(int i=0; i<newSize; i++)
{
newCNames[i] = cNames[i];
}
for(int i=oldSize; i<newSize; i++)
{
newCNames[i] = NULL;
}
/* copy current array to old array */
cNames = newCNames;
delete(newCNames);
size++;
}
要在 C++ 中拥有可动态增长的数组,您should use std::vector http://en.cppreference.com/w/cpp/container/vector或者至少看看它的实现。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)