char数组中奇怪的字符

时间:2013-01-08 20:38:42

标签: 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;
}

如果我在char * chArr = new char[str.size()];后调试器说明了以下内容:

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

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

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;
}

做到了!

1 个答案:

答案 0 :(得分:8)

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

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