对于字符串,sizeof 和 strlen 的坑
2026/7/8小于 1 分钟
对于字符串,sizeof 和 strlen 的坑
sizeof 和 strlen 对字符串的区别:
sizeof:编译时计算,返回变量/类型占用的内存大小(包括\0)strlen:运行时计算,返回字符串的实际长度(不包括\0),从头遍历到第一个\0
char str[] = "hello";
sizeof(str); // 6(5个字符 + 1个'\0')
strlen(str); // 5(不含'\0')
char *p = "hello";
sizeof(p); // 4 或 8(指针大小,不是字符串长度!)
strlen(p); // 5关键陷阱:(4/8字节),不是它指向的字符串长度。strlen 传入未以 \0 结尾的缓冲区会越界访问——未定义行为。

