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