我有以下功能:
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)
做到了!
你不是空终止.为什么不用strcpy(chArr, str.c_str());?
而且您还需要在分配中添加一个: char* chArr = new char[str.size() + 1];