动态内存分配初始化在C++类
问题描述:
(我不是张贴我的代码,因为这是一个项目,但是我试图让这个问题的帮助,但有没有运气)动态内存分配初始化在C++类
您好,我是试图初始化一个指针数组的大小(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(): invalid next size (fast)
这是奇怪,因为即使myArray
是大小为4,当我尝试访问,比如说,第3元,我得到了同样的错误如上。
我很新的C++和我解决了这些问题很意图。我不得不求助于这个论坛寻求帮助,并期待着来自你们的一些想法:)
答
如果你是新的C++程序员,并希望与C++一起工作字符串列表更好的工作与std::vector<std::string>
完整的教程如何使用载体见: http://www.cplusplus.com/reference/vector/vector/
但在你的问题是字符串列表大小固定?或不? 如果字符串列表是不固定的,你必须在构造函数中的malloc数组首次空间,然后realloc的数组,当你想在你的字符串列表,例如插入一个字符串:
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;
}
}
使用'的std ::矢量<:string>'似乎更好。 – Jarod42
您可能试图释放不是由malloc的分配的指针(或删除不是由新创建的对象),或者您可能试图释放/删除这样一个对象不止一次。 –
我怀疑编译器不喜欢“new char * []”位。为什么不尝试类似:“char * myArray = new char [value];” – 2015-08-15 12:43:46