繁体   English   中英

为int数组动态分配内存,该数组在C中转换为字符串

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM