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