Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Zwracanie dynamicznej tablicy z funkcji

Ostatnio zmodyfikowano 2014-12-28 19:58
Autor Wiadomość
TheHardew
Temat założony przez niniejszego użytkownika
Zwracanie dynamicznej tablicy z funkcji
» 2014-12-28 17:20:01
Cześć!
Mam prostą funkcję:

C/C++
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.
P-123463
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.
P-123487
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";
P-123492
« 1 »
  Strona 1 z 1