2015-08-15 54 views
0

(我不是张贴我的代码,因为这是一个项目,但是我试图让这个问题的帮助,但有没有运气)动态内存分配初始化在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++和我解决了这些问题很意图。我不得不求助于这个论坛寻求帮助,并期待着来自你们的一些想法:)

+0

使用'的std ::矢量'似乎更好。 – Jarod42

+0

您可能试图释放不是由malloc的分配的指针(或删除不是由新创建的对象),或者您可能试图释放/删除这样一个对象不止一次。 –

+0

我怀疑编译器不喜欢“new char * []”位。为什么不尝试类似:“char * myArray = new char [value];” – 2015-08-15 12:43:46

回答

0

如果你是新的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; 

    } 

}