malloc分配中的额外字节

时间:2015-02-24 19:56:24

标签: c malloc

我有这条道路: ./demodir/a1/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa1

当我仅使用一(1)个额外字节为字符串中的路径名分配空间时(对于' \ 0'),字符串的打印方式不同。

path = (char *) malloc( strlen(dirname) + strlen(direntp->d_name) + 1 );    

打印: ./demodir/a1!/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa1

�....是问题

我需要所有" + 2"内存分配的字节数,除了内容的长度。为什么会这样?

1 个答案:

答案 0 :(得分:3)

你需要额外的字节来包含斜杠'/',将dirname与basename分开。

char  *path = (char *) malloc( strlen(dirname) + 1 + strlen(direntp->d_name) + 1 );  
sprintf(path, "%s/%s", dirname, dirent->d_name)