我只是想知道,在下面的情景中,'stringvar'使用的內存在方法1完成執行後釋放了嗎?這樣做是否超出範圍釋放關聯的內存?
// Just some method
void method2(char* str)
{
// Allocate 10 characters for str
str = malloc(10 * sizeof(char));
}
// Just another method
void method1()
{
char* stringvar;
method2(stringvar);
// Is the memory freed hereafter, or do I need to call free()?
}
我問,因爲如果我把一個「自由(STRINGVAR)」的方法1月底,我收到了警告,STRINGVAR是內部方法1未初始化(這是真的)。
謝謝您指出method2中相當嚴重的錯誤。 – emk 2009-08-24 14:59:10
您不應該使用malloc的返回值,因爲這是C. – aib 2009-08-25 07:25:48
如果我想將method2中的「str」作爲一個數組來處理,那麼我將不得不使用* str [x],對不對? – pbean 2009-08-25 09:35:09