取消引用指向 char 指针的指针 C++

Dereferencing pointer to char pointer c++

我有以下代码:

char **ptr;
*ptr=strdup("This is a pointer");
cout<<*ptr<<endl;

当我尝试执行它时,我在 cout 指令处遇到段错误。如果我这样做

char *ptr;
ptr=strdup("This is a pointer");
cout<<ptr<<endl;

一切正常。导致问题的原因是什么?解决方法是什么?我不是在寻找 "Use strings" 类型的解决方案。

char **ptr; //I have a pointer to pointer to char
*ptr = ...; //I dereference the pointer I never initialized and, wait...

ptr 从未初始化为指向任何东西。当您取消引用并分配给它时,您会得到未定义的行为。要么在不需要时不使用 ** 指针,要么初始化 ptr.

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