다음 코드가 있습니다.
char **ptr;
*ptr=strdup("This is a pointer");
cout<<*ptr<<endl;
실행하려고하면 cout
명령 에서 segfault가 발생합니다 . 내가 대신하면
char *ptr;
ptr=strdup("This is a pointer");
cout<<ptr<<endl;
모든 것이 올바르게 작동합니다. 문제의 원인과 해결 방법은 무엇입니까? "문자열 사용"유형의 솔루션을 찾고 있지 않습니다.
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"));
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다