char *genrateRandomName(JNIEnv *env) {
    srand(time(NULL));

    // 生成随机文件名的长度
    const int filenameLength = 16; // 16位文件名
    const int fixedStringLength = 4; // 固定字符串的长度
    const int insertPosition = 8; // 固定字符串插入的位置

    // 创建一个缓冲区来存储随机文件名
    char *randomFileName = (char *)malloc((filenameLength + 1) * sizeof(char)); // +1 用于存储字符串结尾的空字符

    if (randomFileName == NULL) {
        // 处理内存分配失败的情况
        return NULL;
    }

    // 生成随机文件名
    for (int i = 0; i < filenameLength; ++i) {
        // 在特定位置插入固定字符串
        if (i == insertPosition) {
            strncpy(randomFileName + i, "ment", fixedStringLength);
            i += fixedStringLength - 1;
        } else {
            randomFileName[i] = generateRandomCharacter();
        }
    }
    randomFileName[filenameLength] = '\0'; // 添加字符串结尾的空字符

    return randomFileName;
}

名为 genrateRandomName 的函数,用于生成随机文件名。然而,您返回的是指向局部数组 randomFileName 的指针,这是不安全的,因为局部数组的生存期仅限于函数调用期间。一旦函数返回,该数组就会被销毁,指向它的指针就会变成悬空指针,这会导致未定义的行为。

释放数组内存 free(数组名);