将新整数插入动态数组时出现分段错误
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;
您应该在使用变量之前对其进行初始化,并且您应该注意在您不这样做时警告您的编译器。
当我尝试向动态数组中插入新整数时出现分段错误。
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;
您应该在使用变量之前对其进行初始化,并且您应该注意在您不这样做时警告您的编译器。