2009-05-28 80 views
0

我只是將一個Objective-C庫轉換爲C庫,希望能夠跨平臺。然而,一切似乎都沒有問題,直到我把這件東西送去處理。Malloc'ed字符串包含垃圾值

這是在我得到一個錯誤。

回想幾個修訂,我注意到調試器中的一些東西。

右像這樣一個malloc分配字符串後:

char *theString = malloc(SOME_SIZE * sizeof(char)); 

我會看到theString是\ X03和* theString是 「3 '\ 003'」。

我最初假定這只是奇怪的記憶,因爲我沒有穿過strcat或任何東西,但是奇怪的起始字符貫穿始終,並且在每一個其他點都重複執行類似的malloc 。

就正常處理而言,這很好。不幸的是,我不明白它是什麼,否則,我只會做一些像切斷第一個角色或其他東西那樣激烈的事情。

有人可以向我解釋那是什麼以及如何處理它,如果我想要安全地將其轉換爲NSString?

回答

9

malloc返回的值不保證設置爲任何特定值。只有在您指定的時間內,才能保證您擁有的內存長度至少可以保證。如果你想讓記憶保持一定的價值,你需要自己去做。或者使用calloc來清零內存。

+1

請注意,除非必要,否則不應使用calloc(例如對於結構體或數組)。 – 2009-05-28 05:33:32