목록언어 (28)
개발하는 리프터 꽃게맨입니다.
malloc과 new 둘 다 동적 메모리 할당, 힙 메모리의 사용을 위해 호출하는 명령어입니다. 언뜻 보기에는 둘 다 똑같은 명령어 같고, 동적 메모리 할당할 때 malloc은 C에서 쓰고 new는 C++에서 쓰는 명령어다! 라고 이해하시는 분들도 많습니다. 간단하게 두 개의 공통점과 차이점, 예시를 알아보도록 하겠습니다. 1. 공통점 - 동적 메모리를 할당한다. - 지정된 크기의 메모리 블록을 할당하고, 시작 주소의 포인터를 반환한다. - 명시적으로 해제를 해줘야 한다. 2. malloc의 특징 /* malloc의 기본 형식 */ #include void *malloc(size_t size); - malloc은 void* 를 반환한다. 그래서 형변환 캐스팅이 필수적입니다. - size를 바이트 단위로 ..
scanf는 C 언어의 입력 함수입니다. 만약, 7 바이트 사이즈의 char형 string 변수에 'Crabman' 을 입력하면 어떻게 될까요? #define _CRT_SECURE_NO_WARNINGS #include using namespace std; int main() { char string[7]; scanf("%s", string); //Crabman 을 입력하고 싶어! return 0; } 정답은 '오류가 발생한다.'입니다. 보통 프로그램에서 '문자열'은 종단에 '널문자 (\0)'를 추가하여 문자열의 끝맺음을 해줍니다. H e l l o \0 이런 느낌이죠. 그런데, 기본적으로 scanf는 입력 버퍼의 최대 크기를 모릅니다. 그렇기에 7바이트의 버퍼에 문자열을 할당하는 순간 펑! '배열의 크기..