【发布时间】:2023-03-14 03:37:02
【问题描述】:
我有以下代码
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。 谁能解释一下原因?
【问题讨论】:
-
此代码读取超出分配的内存,可能导致未定义的行为
-
使用
calloc(),你会得到正确的答案(应该是0)。没有(便携式)方法可以确定分配块的大小(除非最新标准中有新内容)。