指针分配澄清

时间:2014-10-25 02:03:40

标签: c++ pointers segmentation-fault

还在这里学习C ++。试图了解指针分配的一些内容。我的问题在于下面代码的评论。

#include <string>
#include <iostream>

int main(){

    std::string test = "foop";
    std::string * pointer;

    *pointer = test;       //Why does this crash my program...
    pointer = &test;    //But this doesn't? 

    return 0;
}

根据我所读到的内容,我认为* p = o和p =&amp; o做了同样的事情。我很欣赏启蒙。

谢谢!

2 个答案:

答案 0 :(得分:4)

*p = o;

o分配给p指向的事物。在你的代码中p(或pointer)是未初始化的,所以它分配给上帝知道什么,导致崩溃(如果你很幸运),或者默默地破坏记忆(如果你不是&#39;吨)。

p = &o;

o的地址指定给p,使p指向o。这是明确定义的。

答案 1 :(得分:1)

指针需要先分配地址,以便取消引用。 现在string *指针指向垃圾地址!所以当你分配字符串foo时,程序会说,我不希望“foo”住在转储中!然后就崩溃了。