我正在尝试将 pid 转换为字符串。我这样尝试过:
int pid = getpid(); //this int conversion should be ok as far as I know
char * mypid = (char *)malloc(sizeof(int));
sprintf(mypid, "%d", pid);
Run Code Online (Sandbox Code Playgroud)
我认为我的错误可能是我最后没有添加 NULL。我尝试这样做,但仍然收到错误消息。有人可以解释一下将 PID 转换为 char * (“string”) 的最佳方法是什么吗?谢谢!!
sizeof(int)
在您的系统上很可能是 4 个字节。包含 PID 的字符串将需要(假设 16 位 PID)至少 6 个字节:5 个用于十进制数字,1 个用于空终止符。因此,您没有分配足够的空间,并且可能会超出分配的数组的末尾。这会调用未定义的行为。
确保为相关字符串分配足够的空间:
int pid = getpid();
char * mypid = malloc(6); // ex. 34567
sprintf(mypid, "%d", pid);
Run Code Online (Sandbox Code Playgroud)
或者使用固定大小的字符串:
int pid = getpid();
char mypid[6]; // ex. 34567
sprintf(mypid, "%d", pid);
Run Code Online (Sandbox Code Playgroud)
如果您的系统支持 32 位 PID,则至少需要 11 个字节。对于 64 位 PID,至少为 21。