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(数组名);