OK na pytanie previous zostało udzielone jednoznacznie, ale dowiedziałem się, że inny problem.C++ nowe i usuń i ciąg i funkcje
Co jeśli zrobię:
char *test(int ran){
char *ret = new char[ran];
// process...
return ret;
}
a następnie uruchomić go:
for(int i = 0; i < 100000000; i++){
string str = test(rand()%10000000+10000000);
// process...
// no need to delete str anymore? string destructor does it for me here?
}
Więc po konwersji char * do łańcucha, nie muszę się martwić o usunięciem więcej?
Edit: Jak odpowiedział muszę delete[]
każdy new[]
rozmowę, ale w moim przypadku nie jest możliwe, ponieważ jego wskaźnik zgubił, więc pytanie brzmi: w jaki sposób mogę przekonwertować char na ciąg prawidłowo?
Re: Edytuj ... Albo don 't stracić wskaźnik (jak na moją odpowiedź poniżej) lub (jeszcze lepiej) nie "nowy" wskaźnik, wystarczy użyć 'std :: string' do przechowywania ciąg. Dlaczego chcesz samodzielnie alokować pamięć? – Johnsyweb