char数组中奇怪的字符

sch*_*eda 0 c++ arrays char

我有以下功能:

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;
}
Run Code Online (Sandbox Code Playgroud)

如果我char * chArr = new char[str.size()];在调试器说下面后休息一下:

chArr   0x00c38cf8 "ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍýýýý««««««««þîþîþ"
Run Code Online (Sandbox Code Playgroud)

如果我在迭代后做了一个休息,我得到这个:

chArr   0x00c38cf8 "***************ýýýý««««««««þîþîþ"
Run Code Online (Sandbox Code Playgroud)

我做错了什么?

编辑:

size_t const gSize = 15; typedef char * 
TMaze [gSize]; 
Maze[0] = strAlloc ("***************");
Run Code Online (Sandbox Code Playgroud)

在类型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;
}
Run Code Online (Sandbox Code Playgroud)

做到了!

Fre*_*son 8

你不是空终止.为什么不用strcpy(chArr, str.c_str());

而且您还需要在分配中添加一个: char* chArr = new char[str.size() + 1];

  • 和`new char [str.size()+ 1]`. (2认同)