首先,我知道我可以使用std::vector
而不是arrays
,但是我想使用数组,因为我想了解如何在声明范围之外分配内存。
我想将common_words数组传递给一个函数,然后在该函数中分配一些内存。
运行代码时,我收到以下消息:
抛出'std :: bad_alloc'实例后调用terminate
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;
}
谢谢!
答案 0 :(得分:-2)
编辑。...这是一个示例,有点像内存中发生的情况。
int* allocateArray(int size){
int *ptrArray = new int[size];
return ptrArray;
所以一行一行。定义数组并放入其参数。为此,我们将获得数组的大小。 int size
接下来,我们需要创建内存位置并为其指定一个指针。 int *ptrArray = new int[size]
接下来,我们要返回指针的值,因此基本上也指向它指向的地址。 return ptrArray
请注意,当我们定义数组时,我们如何做int *以便让我们知道我们将返回指针的值。这是内存中看起来像的超级简单的img
我还删除了之前说过的内容,我说过不要将其设为超长篇幅,也因为它不相关。