c++ - 将新整数插入动态数组时出现分段错误
问题描述
当我尝试向其中插入新整数时,动态数组出现分段错误。
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;
您应该在使用变量之前对其进行初始化,并且您应该注意编译器会在您不这样做时向您发出警告。
推荐阅读
- assembly - 64 位或使用 64 位寄存器的地址大小覆盖前缀
- scala - Scala嘲笑这种行为
- typescript - 在 Visual Studio 中将 typescript 错误报告为警告,并且不会使构建失败
- spring - 如何从 MONO/FLUX 中提取字符串值 -
- laravel - 从 json 获取嵌套数组的值
- c# - WPF 按钮效果
- android - org.jetbrains.kotlin.util.KotlinFrontEndException:分析表达式时出现异常
- css - CSS级联起源和重要性的优先级
- r - 如何通过固定列合并两个数据框
- python - 排序列表,为索引分配名称并打印它们