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 ,同样的行为

编辑2:

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

    strcpy(chArr, str.c_str());

    return chArr;
}

做到了!

4

1 回答 1

8

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

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

于 2013-01-08T20:40:44.857 回答