2014-04-28 30 views
0

我是C++新手(從Java移植),我無法理解我的代碼中是否有內存泄漏。C++ char []內存泄漏?

這是我的代碼的基礎上(它更復雜,我把其中的內存可能會泄漏的重要場所)

char message[15000]; 
char allMessages[102400]; 
int allMessagesCounter; 

int main() { 
    connect() \\this works just fine 
    openThreadAndGetAllMessages() \\ here I get each time a message to my message char array and concatenate it into allMessages array using allMessagesCounter 
    cout << allMessages; 
    disconnect() \\works just fine as well 
} 

我的問題是,我需要釋放消息[]和allMessages [ ]?

謝謝!

回答

4

否。一般來說,在C++中,如果您使用關鍵字new,那麼您以後也應該使用delete。你的變量是靜態分配的,不需要刪除。

0

不,你不這樣做,因爲它們不是動態分配的。如果內存分配爲new,則只需撥打delete

int *a = new int [5]; //must call delete [] or memory leak 
int b [5]; //no need 
+1

這是不正確的。由於'message'和'allMessages'在函數的主體中沒有被聲明,所以它們不被分配到堆棧中。它們是靜態分配的,這意味着它們可能位於程序的'.bss'節中,並且在程序被OS加載時它們被「分配」。 –

+0

@JonathonReinhart對不起,錯誤的用語 – yizzlez

+0

你最後一句話是真的,但其餘的不是。 –