C++ 将指针解引用到字符指针c++;

C++ 将指针解引用到字符指针c++;,c++,pointers,dereference,strdup,C++,Pointers,Dereference,Strdup,我有以下代码: char **ptr; *ptr=strdup("This is a pointer"); cout<<*ptr<<endl; 一切正常。问题的原因是什么?解决方法是什么?我不是在寻找“使用字符串”类型的解决方案 ptr从未初始化为指向任何内容。当您取消引用并分配给它时,您将获得未定义的行为。在不需要指针时不要使用它们,或者初始化ptr char** ptr = new char*(strdup("where did my rubber duck go"

我有以下代码:

char **ptr;
*ptr=strdup("This is a pointer");
cout<<*ptr<<endl;
一切正常。问题的原因是什么?解决方法是什么?我不是在寻找“使用字符串”类型的解决方案

ptr
从未初始化为指向任何内容。当您取消引用并分配给它时,您将获得未定义的行为。在不需要指针时不要使用它们,或者初始化
ptr

char** ptr = new char*(strdup("where did my rubber duck go"));

你认为
char**ptr
到底做了什么?提示:为什么
int*ptr*ptr=5;请注意,
(strdup(“我的橡皮鸭去哪里了”)
对于分配
字符*
,是不必要的-这里James同时分配和初始化它。
char **ptr; //I have a pointer to pointer to char
*ptr = ...; //I dereference the pointer I never initialized and, wait...
char** ptr = new char*(strdup("where did my rubber duck go"));