c++类中的动态内存分配初始化

Dynamic memory allocation initialisation in C++ class

本文关键字:内存 分配 初始化 动态 c++      更新时间:2023-10-16

(我没有发布我的代码,因为这是一个项目,但我曾试图得到帮助,但没有运气)

嗨,我正试图初始化指针数组(char*)的大小,这是我的类class A的私有成员变量

我使用构造函数通过设置一个整数变量(也是一个成员变量)来设置大小,该变量将用于创建指针数组。

我已经这样做了:

// Constructor - 'int value' is set to a value
private:
    int value;
    char ** myArray = new char*[value];

基本上,我想要一个指针数组,其中每个元素都可以指向一个字符串。我通过使用(char*) stringVar.c_str();传递字符串变量给myArray

虽然所有这些工作,我得到一些非常奇怪的错误,当试图存储变量,甚至得到这个错误:

free (): invalid next size (fast)

这很奇怪,因为即使myArray的大小是4,当我试图访问,比如说,第三个元素,我得到了和上面一样的错误。

我是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;
   }
}