首先我知道我可以使用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;
}
谢谢!
编辑....所以这是一个例子和一个有点在记忆中发生的事情的图像。
int* allocateArray(int size){
int *ptrArray = new int[size];
return ptrArray;
所以一行一行。定义数组并放入其参数。为此,我们将拥有数组的大小。 int size
接下来我们需要创建内存位置并给它一个指针。 int *ptrArray = new int[size]
接下来我们想要返回指针的值,所以基本上它指向的地址也是如此。 return ptrArray
注意当我们定义数组时我们做int *让它知道我们将返回一个指针的值。这里有一个超级简单的img,它在内存中的样子
此外,我删除了以前的东西,我说它不是一个超长的帖子,也因为它不相关。