0

私は次の機能を持っています:

char * strAlloc(string str) {
    char * chArr = new char[str.size()];

    for (size_t i = 0; i < str.size(); i++) {
        chArr[i] = str[i];
    }

    return chArr;
}

char * chArr = new char[str.size()];デバッガーが次のように言った後に休憩をとった場合:

chArr   0x00c38cf8 "ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍýýýý««««««««þîþîþ"

そして、for反復の後に休憩をとると、次のようになります。

chArr   0x00c38cf8 "***************ýýýý««««««««þîþîþ"

だから私は何を間違っているのですか?

編集:

size_t const gSize = 15; typedef char * 
TMaze [gSize]; 
Maze[0] = strAlloc ("***************");

タイプTMazeでは、char配列のポインターもstr.size()+ 1を試す必要があり、同じ動作です

edit2:

char * strAlloc(string const & str) {
    char * chArr = new char[str.size()+1];

    strcpy(chArr, str.c_str());

    return chArr;
}

それをやった!

4

1 に答える 1

8

nullで終了しているわけではありません。使ってみませんstrcpy(chArr, str.c_str());か?

また、割り当てに1つ追加する必要があります。char* chArr = new char[str.size() + 1];

于 2013-01-08T20:40:44.857 に答える