2
的,我有以下代码的strlen的char * malloc的
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-13 19:01:41
使用'calloc()',那么您将得到正确的答案(应该是0)。没有(可移植的)方式来确定分配块的大小(除非最新标准中有新内容)。 – TMN 2012-04-13 19:26:51