我知道這已經有很多問題了,但是我看到的每個例子看起來都不符合。在下面的代碼中,如果我保留free()
,則會生成編譯後的二進制段錯誤。如果我刪除它,代碼工作得很好。我的問題是,爲什麼?簡單的c函數,免費的段錯誤
int convertTimeToStr(time_t* seconds, char* str)
{
int rc = 0;
if (str == NULL) {
printf("The passed in char array was null!\n");
rc = 1;
} else {
char* buf = malloc(sizeof(char) * 100);
memset(buf, '\0', sizeof(buf));
buf = asctime(gmtime(seconds));
strcpy(str, buf);
free(buf);
}
return rc;
}
請勿使用嵌入的行號碼發佈代碼:( –
更改'memset(buf,'\ 0',sizeof(buf));'將'memset(buf,'\ 0',100 * sizeof (char));' –
'sizeof(buf)'與sizeof(char *)'相同,在我的機器上爲8 –