在收到的单独函数std :: bad_alloc中动态地将内存分配给数组

问题描述 投票:-6回答:1

首先我知道我可以使用std::vector而不是arrays,但我想使用数组,因为我想了解如何在声明范围之外分配内存。

我想将common_words数组传递给一个函数,在该函数中我想分配一些内存。

当我运行我的代码时,我会收到:

在抛出'std :: bad_alloc'的实例后终止调用 what():std :: bad_alloc

这是代码:

void allocSpace(std::string *&common_words, int words_k)
{
     common_words = new std::string[words_k];   
}

int main(void)
{
    int words_k = 0, comma_k = 0;
    std::string *common_words;

    std::cout << "Enter the words to be ignored separated by \',\': " << std::endl;
    std::getline(std::cin, words_list);

    comma_k = getCommaNumber(words_list); // returns 2 (const int value)
    words_k = comma_k + 1;

    allocSpace(common_words, words_k);

    return 0;
}

谢谢!

c++ arrays dynamic-memory-allocation
1个回答
-2
投票

编辑....所以这是一个例子和一个有点在记忆中发生的事情的图像。

int* allocateArray(int size){
    int *ptrArray = new int[size];
    return ptrArray;

所以一行一行。定义数组并放入其参数。为此,我们将拥有数组的大小。 int size接下来我们需要创建内存位置并给它一个指针。 int *ptrArray = new int[size]接下来我们想要返回指针的值,所以基本上它指向的地址也是如此。 return ptrArray注意当我们定义数组时我们做int *让它知道我们将返回一个指针的值。这里有一个超级简单的img,它在内存enter image description here中的样子

此外,我删除了以前的东西,我说它不是一个超长的帖子,也因为它不相关。

© www.soinside.com 2019 - 2024. All rights reserved.