将新整数插入动态数组时出现分段错误

Segmentation fault when inserting new integer into dynamic array

当我尝试向动态数组中插入新整数时出现分段错误。

void function1()
{
    ...
    string * array1 = new string[array_length];
    function2(array1, array_length);
    ...
    delete [] array1;
}

void function2(string *array_frm_function1, int &array_length_frm_function1)
{
    int * new_array = new int[array_length_frm_function1];
    int new_array_pos;

    for(int i = 0; i < array_length_frm_function1; i++)
    {
        string subtracted_string = array_frm_function1[i].substr(1,1); // sample string - [3,3]-543-McDonalds, will return '3'
        int string_to_integer = stoi(substracted_string);
        new_array[new_array_pos++] = string_to_integer;
    }
}

目标是从字符串中提取第一个值,在上面的示例中为“3”,并将其转换为 int 数据类型,然后将其存储在动态数组中。

当我计算变量内存地址(array_frm_function1、subtracted_string、string_to_integer)时,它们都是不同的。如果内存地址不同,变量 string_to_integer 会不会起作用?

我不知道是什么原因导致的,因为错误只是说这是分段错误。我上面的函数在内存地址分配方面有什么问题?消除此错误的解决方案应该是什么?

注意:在这种情况下我不能使用矢量!非常感谢!

足够简单

int new_array_pos;

应该是

int new_array_pos = 0;

您应该在使用变量之前对其进行初始化,并且您应该注意在您不这样做时警告您的编译器。