我有以下代码
char *new_str;
int size_in_bytes;
int length;
size_in_bytes = 2*sizeof(char);
new_str = (char *)malloc(size_in_bytes);
length = strlen(new_str);预计长度是2,实际上是16。有人能解释一下为什么吗?
发布于 2012-04-14 02:59:31
strlen()返回第一个空字节('\0')的索引,从您传递它的地址开始。C中的字符串通常都以此字符结尾,以标记字符串的结尾。
strlen()不返回实际内存块的长度。
在你的例子中,内存是未初始化的,strlen()读过你的内存块的末尾,进入你的程序堆的其他部分,直到它发现一个空字节。
https://stackoverflow.com/questions/10146642
复制相似问题