【发布时间】:2017-03-19 18:09:44
【问题描述】:
希望你们今天过得愉快! 所以我想创建一个将单词(字符串)保存为字符数组的类。 我在默认构造函数中为str分配了内存,不知道是不是这样。
` #include <iostream>
using namespace std;
class String{
private:
char *str;
public:
String(){
str=new char[10];
str="Hello";
}
void getstr(){
for (int i=0;i<5;i++){
cout<<str[i];
}
}
~String(){
delete []str;
}
};
int main(){
String s1;
s1.getstr();
return 0;
}
当我运行这个程序时,它会打印“Hello”,但这是确切的输出:
*** Error in `./main': free(): invalid pointer: 0x0000000000400ab5 ***
Hello
当我删除析构函数部分时,它工作正常,但我需要释放分配给 str 的内存,对吗?有什么帮助吗?
提前致谢:)
【问题讨论】:
-
也许使用
std::string?这个str="Hello";也没有意义 -
char str[100];之后是str=new char[10];,然后,令人惊讶的是,str="Hello";。这是怎么回事? -
@ForceBru 问题里不小心写了
str[100],编译的时候居然是*str。
标签: c++