[英]Dynamically allocate memory for an int array converted to string in C
我有一个由以下内容动态分配的整数数组:
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左右时,它会中断并且出现分段错误。
您没有为字符串分配足够的内存。
假设一个int
为32位,则将单个int
转换为字符串最多需要12个字节。 例如,将值-2000000000转换为字符串需要12个字符。 因此,您的字符串至少需要12 * size
字节,再加上", "
字符和空终止符的空间。
另外, sizeof(char)
根据定义为1,因此无需乘以。
char *arrayString = malloc(size * 14 + 1);
// 14 = 12 bytes for a 32-bit int plus 2 bytes for ", "
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.