Zwracanie dynamicznej tablicy z funkcji
Ostatnio zmodyfikowano 2014-12-28 19:58
TheHardew Temat założony przez niniejszego użytkownika |
Zwracanie dynamicznej tablicy z funkcji » 2014-12-28 17:20:01 Cześć! Mam prostą funkcję: const wchar_t * CharToWChar( const char * text ) { unsigned size = 0; while( text[ size++ ] ); wchar_t * wchar_arr = new wchar_t[ size ]; for( unsigned i = 0; i < size; ++i ) *( wchar_arr + i ) = *( text + i ); return wchar_arr; } Konwertuje ona char* do wchar_t*. Mam jednak problem z tym, że pod koniec programu trzeba wywołać delete[], żeby nie było wycieku pamięci ponieważ funkcja zwraca wskaźnik do dynamicznej tablicy. Czy dało by się zrobić coś, aby tablica była usuwana w trakcie działania ciała funkcji, a zwracany był wskaźnik niemodyfikowalnego łańcucha? Wolałbym uniknąć korzystania z obiektów klas, dlatego też nie używam std::string do konwersji. Funkcja mbstowcs też mi jakoś nie przypadła do gustu. |
|
Monika90 |
» 2014-12-28 19:27:51 Ale dlaczego nie chcesz std::wstring? Można zwracać inteligentny wskaźnik std::unique_ptr<wchar_t[]>, który delete[] wywoła automatycznie, ale wstring jest lepszy. |
|
TheHardew Temat założony przez niniejszego użytkownika |
» 2014-12-28 19:58:57 Użycie obiektów klas raczej nie będzie najbardziej efektywnym rozwiązaniem, prawda? Nie znasz jakiegoś rozwiązania bardziej w stylu języka C? Chodzi mi oto żeby zwracany był wskażnik na typ char, który zachowuje się tak samo jak ta zmienna: const char * text = "Foo"; |
|
« 1 » |