2015-06-02 26 views
0

我有一個函數,需要一個(char * const *)。我提供的數據是在std :: string中。所以我這樣做:正確的內存清理與c_str()和const char *

void blahblah(std::string str) 
{ 
    const char * cc = str.c_str(); 
    ConstCharFunction(&cc); 
} 

這很好。我的問題是我需要清理由爲const char ALA使用的內存:

delete cc; 

或者是CC只是一個指向STD mem中的位置:串...

+0

爲什麼如果你沒有修改'std :: string'作爲副本? – emlai

回答

3

這是一個指針到分配在std :: string中的內存。當std :: string超出範圍時,內存被釋放。在此之後請務必不要抓住指針!

1

不,你不需要delete cc。它的確是一個由std::string對象持有的指針。

here

程序不得改變任何一個字符在這個序列中。

指針返回指向字符串對象當前使用的內部數組,以存儲符合其值的字符。

只是要小心,因爲返回的指針c_str()可能會通過調用字符串的修改方法而失效。

相關問題