当我试图在动态数组中插入新的整数时,得到分段错误。
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不会在内存地址不同的情况下工作吗?
我不知道是什么造成的,因为错误只是说它是分割错误。 关于内存地址分配的问题是什么?应该用什么方法来解决这个问题?
注意:在这种情况下我不能使用vector! 非常感谢!
很简单
int new_array_pos;
应该是
int new_array_pos = 0;
你应该在使用变量之前初始化它们,并且你应该注意编译器在你没有这样做的时候会警告你。