인자의 차이를 제껴두면 말이 안됩니다.
윗분 말씀대로 stdup은 내부에서 동적할당된 버퍼를 돌려주기 때문에, 인자가 복사할 문자열만 있으면 되는거고, strcpy는 복사된 문자열이 저장될 버퍼를 동적할당하지 않고 사용자로부터 제공받아서 거기에 복사하기 때문에 인자가 두개 필요한것입니다.
구체적인 구현 방법은 컴파일러에 따라 다릅니다.
사용하고 계신 컴파일러의 구현 방법을 보실려면 직접 string.h 파일에서 찾아보세요.
gcc같은 경우는 strlen으로 할당해야할 크기를 구해서 __builtin_alloca 이라는 매크로인지 함수인지 모르겠는걸 이용해서 메모리를 할당하고, memcpy로 복사하게 되어있네요.
음.
stdup는 malloc 하자나요.
머리를 굴려라! 그래야 먹고 산다.
인자의 차이를
인자의 차이를 제껴두면 말이 안됩니다.
윗분 말씀대로 stdup은 내부에서 동적할당된 버퍼를 돌려주기 때문에, 인자가 복사할 문자열만 있으면 되는거고, strcpy는 복사된 문자열이 저장될 버퍼를 동적할당하지 않고 사용자로부터 제공받아서 거기에 복사하기 때문에 인자가 두개 필요한것입니다.
네 할당부분은 알고
네 할당부분은 알고 있는 부분이고요
혹시나 다른 차이가 있나 싶어서
질문을 올린겁니다
-------------------------
내 악마를 영혼에게 팔아넘기다
구체적인 구현
구체적인 구현 방법은 컴파일러에 따라 다릅니다.
사용하고 계신 컴파일러의 구현 방법을 보실려면 직접 string.h 파일에서 찾아보세요.
gcc같은 경우는 strlen으로 할당해야할 크기를 구해서 __builtin_alloca 이라는 매크로인지 함수인지 모르겠는걸 이용해서 메모리를 할당하고, memcpy로 복사하게 되어있네요.
차이 없을겁니다..
보통은 내부적으로 strcpy 를 사용해서 하더군요..
아.. GNUC 는 매크로로 memcpy 를 쓰는군요.. ;;;
되면 한다! / feel no sorrow, feel no pain, feel no hurt, there's nothing gained.. only love will then remain.. 『 Mizz 』
되면 한다! / feel no sorrow, feel no pain, feel no hurt, there's nothing gained.. only love will then remain.. 『 Mizz 』
댓글 달기