【发布时间】:2018-06-12 16:30:33
【问题描述】:
我有一个由以下动态分配的整数数组:
int *ranArr(int size) {
int *arr= malloc(size *sizeof(int));
for(int i = 0; i < size; i++) {
arr[i] = genRan(size);
}
return arr;
}
我想为一个字符串动态分配内存,我会将我的整数数组转换为字符串并将其存储在字符串中:
int *arrayCopy = ranArr(size);
int arrayCopyLen = size;
char *arrayString= (char*) malloc(size * sizeof(char));
int index = 0;
for(int i = 0; i< arrayCopyLen ; i++) {
index += sprintf(&arrayString[index], "%d ,", arrayCopy[i]);
}
int arrayStringLen = strlen(arrayString)+1;
这适用于 1000 左右的数组大小,但是当我将大小设置为 2000 左右时,它会中断,并且出现分段错误。
【问题讨论】:
-
什么是
arrString?它没有在你的代码中定义 -
genRan是什么? -
@EugeneSh。该函数接受一个整数作为参数(typeof size)并返回一个整数(typeof arr[i])。这个函数计算对问题不重要的东西。函数名称暗示了一些随机数生成,但这是一个猜测。
-
@harper 是正确的,它只是生成一个从 0 到 size 的随机数。
-
@ChrisTurner 刚刚创建了一个类型,在编辑中更正了它!
标签: c arrays string segmentation-fault malloc