(我不会发布我的代码,因为这是针对某个项目的,但是我试图为这个问题寻求帮助,但没有运气)
您好,我正在尝试初始化指针数组(char*
)的大小,这是我的类class A
的私有成员变量
我正在使用构造函数通过设置一个整数变量(也是一个成员变量)来设置大小,然后用它来创建我的指针数组。
到目前为止我已经这样做了:
// Constructor - 'int value' is set to a value
private:
int value;
char ** myArray = new char*[value];
所以基本上我想要一个指针数组,其中每个元素都可以指向一个字符串。我使用(myArray
)char*
stringVar.c_str();
尽管所有这些都有效,但在尝试存储变量时我遇到了一些非常奇怪的错误,甚至出现了这个错误:
free():下一个尺寸无效(快)
这很奇怪,因为即使myArray
大小为4,当我尝试访问第三个元素时,我也会得到与上面相同的错误。
我是C ++的新手,我非常想解决这些问题。我不得不求助于这个论坛寻求帮助,我期待着你们的一些想法:)
答案 0 :(得分:0)
如果您是新的C ++程序员并希望使用C ++ String list,则可以更好地使用std::vector<std::string>
来完成有关如何使用向量的教程:
http://www.cplusplus.com/reference/vector/vector/
但在你的问题是字符串列表大小是否固定?或不? 如果字符串列表没有修复,你必须首先在构造函数中使用malloc space作为数组,然后在你想在字符串列表中插入一个字符串时重新分配数组,例如:
class A{
private:
char** arrayy;
int arrayysize;
A(){
arrayy = (char**)calloc(1,sizeof(char*));
arrayysize = 1;
}
insertToarrayy(char* data){
strcpy(arrayy[arrayysize-1],data);
arrayy = (char**)realloc(arrayy,arrayysize+1);
arrayysize += 1;
}
}