永发信息网

关于 pstr=&str 和 *pstr=str

答案:2  悬赏:10  手机版
解决时间 2021-02-22 15:30
  • 提问者网友:喧嚣尘世
  • 2021-02-21 16:41
#include
#include
#include
using namespace std;
int main()
{
vector word;
string str;
while (cin>>str)
{
string *pstr=new string;
pstr=&str;
word.push_back(pstr);
}
vector::const_iterator iter=word.begin();
while (iter!=word.end())
{
cout<<**iter<<"\t"<<(**iter).size()< ++iter;
}
return 0;
}
为什么pstr=&str 改成 *pstr=str 就没问题了
我感觉这2个差不多啊
求解 谢谢
最佳答案
  • 五星知识达人网友:胯下狙击手
  • 2021-02-21 17:33
pstr 你已经new出一个对象了,如果你还是pstr = &str;那么new的有什么 用,而且导致内存泄漏,
还有你这样,你push_back的这个地址是一个固定的值,是不会变化的,它永远是指向str的
全部回答
  • 1楼网友:摆渡翁
  • 2021-02-21 19:04
char *pstr=(char*)malloc(str_size);这时pstr指向占用str_size个字节的堆空间。 *pstr='\0';给首地址赋0。 那么这时printf("%s", pstr);等就有意义,因为第一个就是\0。 反之没有赋0,printf("%s", pstr)就会输出直到遇到0或访问内存出错。 这是一个较好的编程习惯,在这里其实写不写都可以(建议写)。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯