字符数组中奇怪的字符

Weird chars in char array

本文关键字:字符 数组      更新时间:2023-10-16

我有以下功能:

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迭代之后做一个break,我会得到这个

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

我做错了什么?

编辑:

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

类型的TMaze,我需要字符数组的指针也尝试str.size()+1,同样的行为

edit2:

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

做到了!

没有空终止。为什么不直接用strcpy(chArr, str.c_str());呢?

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