-1

我有以下代码:

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

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

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

一切正常。是什么导致了问题,解决方法是什么?我不是在寻找“使用字符串”类型的解决方案。

4

1 回答 1

2
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"));
于 2016-03-17T04:17:00.240 回答