c++ 초보입니다. 다음 코드의 차이가 궁금합니다.

익명 사용자의 이미지

#include
using namespace std;

class Test
{
public
void input();
private
};

void Testinput()
{
char *temp;
cin >> temp;
cout << temp;
}

int main()
{
Test test;
test.input();
return 0;
}
이렇게 input 함수를 불러서 cin을 실행을 하면 seg falut가 나옵니다.

그런데

#include
using namespace std;

int main()
{
char* name;
cin >> name;
cout << name;
return 0;
}

이면 정상 출력이 되는군요...

하나는 객체를 생성해서 그 안에 잡힌 pointer에 문자열을 넣었고, 하나는 직접
했습니다. 제 생각에는 메모리 할당 문제인것 같은데, 메모리가 어떻게 잡히길래 이>

차이가 발생한 겁니까?

저의 잘못된 생각을 지적해 주시면 감사하겠습니다.

익명 사용자의 이미지

흠... 보니깐... 이렇게 해보세요...

char temp[256];
cin >> temp;
cout<

이렇게 하면 될듯하네요... 객체의 인스턴스를 선언한다고 포인터에 메모
리가 잡히는건 아니죠... 그런데 main에다 직접 쓰면 된다고 하셨죠? 아
마... 컴파일러에따라 다를겁니다. 원래 정석은 그게 아니니깐...
암튼 메모리 segmentation fault가 일어난다면 메모리 할당을 무조건 의심
해봐야합니다....