這個應該很快,我想。不能釋放一個Malloc'd字符串
編輯:這是我的CS113類。我只需要釋放所有的內存。如果Valgrind發現任何內存泄漏,我會失分。 :P
無論如何,我發現它顯然只是要求我在Main中釋放與zero_pad的返回值有關的東西。一旦我這樣做,它運作良好。如果我知道如何,我會將這篇文章標記爲「完整」。
char *zero_pad(struct cpu_t *cpu, char *string)
{
char *zero_string = malloc(cpu->word_size + 1);
int num_zeros = ((cpu->word_size) - strlen(string));
int i;
for(i = 0; i < num_zeros; i++)
{
zero_string[i] = '0';
}
return strncat(zero_string, string, strlen(string));
}
我需要釋放zero_string,因爲我分配了它。但是,我不知道如何。 如果我在返回之前釋放它,那麼我已經丟失了該數據並且無法將其返回。如果我嘗試釋放它後,該功能已經返回,因此不能繼續釋放它。
我試圖使用strcpy將zero_string中的字符串複製到一個新的字符串中,但我一直在做錯,因爲我剛剛結束了一個大混亂。
那麼,你們都在想什麼?
API文檔提及調用者負責免費返回值是很常見的。 – 2015-11-25 22:40:13
我不知道這意味着什麼人。這裏很新,這是我第一個CS113學期。儘管如此,仍然喜歡它! –
'int num_zeros =((cpu-> word_size) - strlen(string));'包含一個有符號無符號錯誤 –