malloc 分配中的额外字节
extra bytes in malloc allocation
我有这条路:
./demodir/a1/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa1
当我仅使用一 (1) 个额外字节(对于“\0”)为字符串中的路径名分配 space 时,字符串的打印方式不同。
path = (char *) malloc( strlen(dirname) + strlen(direntp->d_name) + 1 );
打印:
./demodir/a1!�/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa1
.... 问题所在
除了内容的长度之外,我还需要所有“+2”字节的内存分配。这是为什么呢?
您需要额外的字节来包含将目录名与基本名分隔开的斜杠“/”。
char *path = (char *) malloc( strlen(dirname) + 1 + strlen(direntp->d_name) + 1 );
sprintf(path, "%s/%s", dirname, dirent->d_name)
我有这条路: ./demodir/a1/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa1
当我仅使用一 (1) 个额外字节(对于“\0”)为字符串中的路径名分配 space 时,字符串的打印方式不同。
path = (char *) malloc( strlen(dirname) + strlen(direntp->d_name) + 1 );
打印: ./demodir/a1!�/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa1
.... 问题所在
除了内容的长度之外,我还需要所有“+2”字节的内存分配。这是为什么呢?
您需要额外的字节来包含将目录名与基本名分隔开的斜杠“/”。
char *path = (char *) malloc( strlen(dirname) + 1 + strlen(direntp->d_name) + 1 );
sprintf(path, "%s/%s", dirname, dirent->d_name)