메모리 동적할당 - C언어 malloc함수, free함수, memory leak(메모리 누수), 메모리 heap영역

  Рет қаралды 22,263

혀니C코딩

혀니C코딩

Күн бұрын

➡️ 소스코드 : cafe.naver.com...
runtime시 메모리를 할당한 후 해제 하는 방법에 대해 배웁니다. 메모리 동적 할당이 필요한 이유에 대해 알아봅니다. malloc으로 할당 된 메모리는 메모리 heap영역에 잡힌다. 이 영역은 free로 반드시 해제 되야 한다. free로 해제 하지 않을 시 메모리 누수(memory leak)이 발생된다.
김수현 강사 cafe.naver.com/honeyc
구독!!! 좋아요!!! 알림 설정!!! 부탁 드려요!!!
#김수현강사 #c언어 #혀니C #혀니씨 #자료구조 #알고리즘 #C++ #코딩인터뷰 #코딩테스트 #프로그래밍 #IT학원 #C언어학원 #IT취업 #포인터 #정보처리기사 #정보처리산업기사 #정보 #공시 #전산직 #공무원 #군무원 # 계리직 #임용

Пікірлер: 88
@something6193
@something6193 Жыл бұрын
3:00 에서 말씀하신 코드는 c99부터 가변길이배열(VLA) 기능이 추가되어 가능한 문법인데 틀린 문법이라고 말하기는 어렵지 않나요?
@withhoneyc
@withhoneyc Жыл бұрын
네:) C에서 가변 길이 배열(VLA:Variable Length Array)을 사용할 수 있습니다. VLA는 C99 표준에 도입되었으며 컴파일 타임이 아닌 런타임에 크기가 결정되는 배열 생성을 허용합니다. 하지만, 런 타임 시 메모리가 할당 되기 때문에 동적 할당 방식을 이해하는 것은 맞다고 생각합니다. 또한, 배열 크기를 자주 조정해야 하는 경우 VLA가 비효율적 입니다. 특히, VLA는 크기가 매우 크면 잠재적으로 많은 메모리를 소비할 수 있다는 문제도 있습니다. 필요한 메모리 양이 사용 가능한 스택 공간을 초과하면 스택 오버플로 오류가 발생할 수 있습니다. 이 문제를 방지하려면 malloc을 사용하는 것이 좋습니다.
@withhoneyc
@withhoneyc Жыл бұрын
Visual Studio는 C에서 VLA(가변 길이 배열)를 지원하지 않습니다. 이는 VLA가 Visual Studio에서 부분적으로만 지원하는 C99 표준에 도입되었기 때문입니다. 대신 Visual Studio에서는 `malloc()` 및 `free()`와 함께 동적 메모리 할당을 사용하여 가변 크기의 배열을 만들 것을 권장합니다. - Clang 및 GCC: VLA를 확장으로 지원 합니다. - Microsoft Visual Studio: VLA를 지원하지 않습니다.
@withhoneyc
@withhoneyc Жыл бұрын
말씀하신 것처럼 틀린 문법이라고 한 건 맞지 않는거 같습니다.😊
@something6193
@something6193 Жыл бұрын
@@withhoneyc 와우.. 답변 감사합니다. 항상 영상 잘 보고 있습니다. 어찌나 설명을 똑 부러지게 잘하시는지 대단하십니다. 감사합니다!
@withhoneyc
@withhoneyc Жыл бұрын
저도 소중한 피드백 너무 감사합니다🙏 질문하신 내용을 다른분등에게도 공유하고자 고정 댓글로 올려놨습니다😊
@NANLiche
@NANLiche 11 ай бұрын
그냥 모든 강의 통틀어서 제일 이해잘됨
@withhoneyc
@withhoneyc 11 ай бұрын
넘넘 감사합니다:) 더욱 좋은 강의로 보답하겠습니다.
@김정복-d7e
@김정복-d7e 6 күн бұрын
강의 굿!! 이해가 너무 잘 됩니다. 강의 잘 들었습니다. 감사합니다.
@withhoneyc
@withhoneyc 6 күн бұрын
감사합니다~🤗
@gloryfarm
@gloryfarm 8 ай бұрын
아래 댓글처럼 정말 이해가 잘되는 최고의 강의! 정말 감사드려요.
@withhoneyc
@withhoneyc 8 ай бұрын
이해가 되셨다니 정말 기쁘네요👍 감사합니다:)
@김도영-o1e
@김도영-o1e 10 ай бұрын
내 인생 최고의 c언어 강의.. 감사합니다😢
@withhoneyc
@withhoneyc 10 ай бұрын
너무 너무 감사합니다🙏
@유연한판단
@유연한판단 Ай бұрын
선생님 사랑합니다❤❤❤❤
@antoniohong2948
@antoniohong2948 Жыл бұрын
C언어 처음 공부하는 임문자들한테 추천하고싶은 강의영상입니다. 선생님 정말 최고에요.
@withhoneyc
@withhoneyc Жыл бұрын
으흐흫흐 너무 감사드립니다🙏
@정비-k5h
@정비-k5h Жыл бұрын
와 제가 지금까지 들었던 강의 중에서 제일 이해가 잘돼요 ㅜㅜ
@withhoneyc
@withhoneyc Жыл бұрын
잘 들어 주셔서 감사합니다😊
@chaewonseo8391
@chaewonseo8391 20 күн бұрын
쌤 최고입니다!!
@withhoneyc
@withhoneyc 19 күн бұрын
감사합니다~😊
@withhoneyc
@withhoneyc Жыл бұрын
소스코드 : cafe.naver.com/honeyc/46312
@cjy8972
@cjy8972 3 ай бұрын
탬플릿 영상 찾아보다가 여기까지 왔습니다. 확실히 이해가 잘되네요!
@withhoneyc
@withhoneyc 3 ай бұрын
감사합니다! 자주 찾아와주세용~🙏
@dizzy2k880
@dizzy2k880 3 ай бұрын
쌤. 배웠던거 복습하면서, 수업시간에서 다루지 않았던 부분들을 공부하려고 유튭으로 왔어요. ㅋㅋㅋ
@withhoneyc
@withhoneyc 3 ай бұрын
ㅎㅎㅎㅎㅎㅎ 예쁜 션~❤️
@haein04
@haein04 8 ай бұрын
와... 비전공자도 너무 쉽게 이해가 되네요... 감사합니다
@withhoneyc
@withhoneyc 8 ай бұрын
저도 너무너무 감사합니다😊
@damangetit
@damangetit Жыл бұрын
학교 수업 듣고 꼭 복습할 때 주강의로 삼아서 학습해요. 감사합니다!
@withhoneyc
@withhoneyc Жыл бұрын
어멋!!! 넘 감사해용🙏 자주 찾아와 주세용
@아맞다우산
@아맞다우산 10 ай бұрын
선생님 자료구조 공부 해야돼서 어쩌다 보게 되었는데 c언어 잘 모르는데도 설명을 잘 해주셔서 머리에 너무 잘 들어와요 감사합니다. 저는 자바 개발자인데요 자바에서는 가비지컬렉터가 메모리 관리를 해줘서 메모리에 대해 크게 신경 안 쓰고 코딩했었는데 c에서는 개발자가 직접 메모리 관리를 해줘야 하니깐 두 언어의 차이점도 잘 이해가 되네요. 오늘부터 자료구조랑 알고리즘 강의 감사히 잘 보겠습니다!!
@withhoneyc
@withhoneyc 10 ай бұрын
넹넹 감사함니다😊 개발자여서 금방 습득 하실 거 같아요!! 홧팅 입니다!!!
@음머-z6s
@음머-z6s Жыл бұрын
정처기 공부하다가 malloc 찾아봤는데 잘 이해하고 갑니다 ❤❤❤
@withhoneyc
@withhoneyc Жыл бұрын
이해가 되셨다니 기쁘네용😍
@jaekunyoo8509
@jaekunyoo8509 Жыл бұрын
안녕하세요. 감사히 잘 봤어요. 2023년 10월 11일 수 21시31분 태평양 시간
@이상현-s3b
@이상현-s3b Жыл бұрын
포인터에서 한 번 막히고 강의 보고 이해하고 동적 할당에서 또 막혀서 봤는데 정말 잘 가르치시네요 감사합니다😊
@withhoneyc
@withhoneyc Жыл бұрын
이해가 되신다니 제가 더 기쁘네용😊 힘이 되는 댓글 감사합니다:)
@clay5823
@clay5823 Жыл бұрын
너모나 이해가 잘되었습니다! 감사합니다 구독할께요~ //보조개가 너무 이쁘십니다ㅋ
@withhoneyc
@withhoneyc Жыл бұрын
감사합니다🙏 자주 찾아와 주세요!!!
@dukyoon
@dukyoon 6 ай бұрын
와.. 대박.. 속이 뻥~~
@withhoneyc
@withhoneyc 6 ай бұрын
ㅎㅎㅎㅎ 감사합니당😊
@라면-f3i
@라면-f3i 25 күн бұрын
선생님. 이런 좋은 강의 올려주셔서 감사합니다. 학교 자료구조 수업이 너무 맘에 안 들어서 일반적으로 '자료구조론'이라고 흔히들 얘기하는 범위에 해당하는 부분(그 과정에서 필요한 알고리즘 내용도 들어가도 괜찮음)을 전체적으로 공부하려고 하는데, 그런 목적으로 선생님께서 '자료구조&알고리즘'이라고 묶어놓은 플레이리스트를 싹 다 보면 될까요?
@withhoneyc
@withhoneyc 25 күн бұрын
넹넹^^ 싹다 들으시면 돼용~! 감사합니다:)
@라면-f3i
@라면-f3i 25 күн бұрын
@@withhoneyc 그냥 하는 말이 아니라, 정말 대학교 강의보다 훨씬 좋아요. 감사합니다. 자료구조&알고리즘 선생님 강의로 끝내겠습니다!
@butterfly_dream
@butterfly_dream 5 ай бұрын
기말시험 준비하는 학부생입니다 감사합니다 감사합니다 ㅠㅠㅠ
@withhoneyc
@withhoneyc 5 ай бұрын
저도 넘넘 김사합니다~:) 기말 잘보세용~홧팅!!!
@유희영-h5i
@유희영-h5i Жыл бұрын
허ㅓㄹ,.,. 언니 너무 고마워요 사랑해요
@withhoneyc
@withhoneyc Жыл бұрын
감사합니다🥰
@전공부-i6c
@전공부-i6c 10 ай бұрын
이해가 정말 잘 됩니다!! 감사해요
@withhoneyc
@withhoneyc 10 ай бұрын
자도 감사해용😊
@yejangeee
@yejangeee 3 ай бұрын
바로 구독박고갑니다
@withhoneyc
@withhoneyc 3 ай бұрын
아주 감사합니다!👍
@킴키-o1y
@킴키-o1y 10 ай бұрын
감사합니다!^^
@킴키-o1y
@킴키-o1y 9 ай бұрын
int n ; printf ( "학생수 입력 : ") ; scanf ( " %d", & n ) ; int score [ n ] ; // error 정적할당. stack영역에 저장됨. compile시 메모리 크기가 결정되어있어야 하므로 사용불가. int * score ; score = ( int * ) malloc ( n * sizeof ( int)) ; // 동적할당. heap영역에 메모리할당됨. 실행중(runtime) 메모리 크기가 결정되면 됨. // score는 stack영역에 저장되는 지역변수. heap영역에 malloc된 배열을 가리키는 포인터변수. 8byte
@Hyun-w2v
@Hyun-w2v Жыл бұрын
선생님 이해 잘되게 설명 해주셔서 감사합니다!^^
@withhoneyc
@withhoneyc Жыл бұрын
도움이 되신다니 정말 기뻐용😊
@stockuncle
@stockuncle 4 ай бұрын
선생님이 예쁘면 학생 점수가 강제로 올라가는 이유를 증명
@withhoneyc
@withhoneyc 4 ай бұрын
ㅋㅋㅋㅋㅋㅋ 성적이 안오르면 제 탓인거죠???
@user-iliillllIllill
@user-iliillllIllill Жыл бұрын
재귀함수 설명 듣고 넘 좋아서 구독햇습니당 ㅋㅋㅋㅋ 혹시 C언어 강의는 완결이 된건가요? 비전공자인데 고언어가 재밌어서 c도 같이 공부해보려고합니다..!
@withhoneyc
@withhoneyc Жыл бұрын
감사합니다🙏 9월 둘째 주 부터 C언어 기초 강좌를 순서대로 업로드 할 예정입니다.
@오잉-v6v
@오잉-v6v Жыл бұрын
감사합니당 이해가 잘돼요!! 출처를 남기고 블로그에 공부한걸 기록해도 괜찮을까요!??
@withhoneyc
@withhoneyc Жыл бұрын
넹넹 당연히돼요:)
@dongsuknam3238
@dongsuknam3238 Жыл бұрын
강사님~ 오랜만에 글 올립니다. 궁금한것 질문해도 되죠? 다름이아니라 c언어 에서 2차원 배열을 동적할당하고 해제할때, 할당시에는 세로줄인 행을 할당하고 난다음 가로줄인 열배열을 할당 하는데, 동적해제시에는 반대로 가로줄인 열배열을 먼저해제하고, 세로줄인 행배열을 해제한다는 의미가 잘 이해가 안되는데, 자세히 설명 부탁드려도 될까요?
@withhoneyc
@withhoneyc Жыл бұрын
행배열을 먼저 제거하는 순간 동적 할당 된 열배열의 주소는 다 사라져요~열 배열의 주소가 포인터 배열에 저장되어 있기 때문입니다:)
@dongsuknam3238
@dongsuknam3238 Жыл бұрын
@@withhoneyc 혹시 이 부분에 대해 동영상 설명된 부분이 있을까요?
@withhoneyc
@withhoneyc Жыл бұрын
kzbin.info/www/bejne/o3jOeX2PetSNqck 그래프 구현하면서 2차원 배열 동적 할당하긴 했는데…그래프 부분이라 좀 어려울 수도 있어요:)
@jhpark8624
@jhpark8624 Жыл бұрын
선생님 강의 너무 잘 듣고 있습니다 😊 예전부터 궁금했는데 램이라는 하드웨어 자체가 스택영역, 힙영역, 데이터영역으로 나누어져 있는 건가용??
@withhoneyc
@withhoneyc Жыл бұрын
네:) 크게 그렇게 나눠졌다고 이해 하시면 될 거 같아요.
@torressfernando5003
@torressfernando5003 Жыл бұрын
이차원배열 동적할당도 보고싶어요
@withhoneyc
@withhoneyc Жыл бұрын
넵! 준비할께요:)
@지섭이
@지섭이 4 күн бұрын
스코아.. 스코아....
@아아-b6c8f
@아아-b6c8f Жыл бұрын
파일입출력도 다뤄주실수 있나요
@withhoneyc
@withhoneyc Жыл бұрын
ㅋ 넵!
@woosukbyun2455
@woosukbyun2455 Жыл бұрын
강의에서 메모리 공간을 RAM이라고 표현하셨는데 RAM이 아니라 virtual memory(가상 메모리)로 표현하는게 맞지 않나요?
@withhoneyc
@withhoneyc Жыл бұрын
네:) 가상 메모리 맞습니다. 가상 메모리가 물리 메모리 주소와 매핑되기 때문에 보통 램이라고 많이 얘기하긴 해요^^
@woosukbyun2455
@woosukbyun2455 Жыл бұрын
@@withhoneyc 아 그래요? 제가 알기론 보통 물리 메모리를 램이라고 부르는지 알고 있었는데.. 답변 감사합니당!
@woosukbyun2455
@woosukbyun2455 Жыл бұрын
@@withhoneyc 네 답변 감사합니다.
@withhoneyc
@withhoneyc Жыл бұрын
맞아요!!! 물리메모리를 램이라해요:)
@alphago410
@alphago410 4 ай бұрын
free() 호출 안하면 실행이 종료돼도 해제되지 않는다는 의미인가요?
@withhoneyc
@withhoneyc 4 ай бұрын
네:) 시스템 재부팅 시 해제 됩니다.
@alphago410
@alphago410 4 ай бұрын
@@withhoneyc 그 말은 OS쪽에도 문제가 있다는 의미군요. malloc() 호출은 OS에 대한 요청이고 역시 OS가 응답해 처리하는 부분이니까요
@owatapiano
@owatapiano 4 ай бұрын
타이틀에 momory 오타 있어요~
@withhoneyc
@withhoneyc 4 ай бұрын
앗!!! 감사해요!!!ㅎㅎ 올린지 오래됐는데 ㅠㅠㅠ 이제야 알았네요~😊
@happistence
@happistence Жыл бұрын
C/C++ 막 입문해서 공부 중인데 개념을 설명하시는 내용이 너무 좋아요! 영상을 보고 질문이 하나 생겼습니다. int* score = (int*)malloc(n*sizeof(int)) 에서 score의 자료형이 정수형 포인터라고 선언 됐으므로, r-value로 메모리의 시작 주소값만 받으면 되니까 malloc 앞에 자료형을 꼭 적어줘야 할 필요는 없는 것 같은데 맞나요? 확인해보니 gcc 컴파일러로는 int* score = malloc(n*sizeof(int)) 가 컴파일이 되고, g++에서는 int* score = malloc(n*sizeof(int))가 컴파일이 안되네요 😂😂
@withhoneyc
@withhoneyc Жыл бұрын
넹넹!!! 묵시적으로 형변환 되기 때문에 생략 가능해요!!! g++는 참 엄격해서 공부하기 좋네용😊
@justinjeong813
@justinjeong813 7 ай бұрын
어려운거 같은데
@withhoneyc
@withhoneyc 7 ай бұрын
ㅠ 많이 어려운 부분이라
@park712
@park712 Жыл бұрын
MIT공대 댓글학과 출신입니다. 결혼해 주세요
C언어 2차원 배열 동적 할당 | malloc, free 함수
9:27
혀니C코딩
Рет қаралды 6 М.
Why Data Structures and Algorithms Are Important to Learn?
7:21
노마드 코더 Nomad Coders
Рет қаралды 190 М.
Random Emoji Beatbox Challenge #beatbox #tiktok
00:47
BeatboxJCOP
Рет қаралды 58 МЛН
I tricked MrBeast into giving me his channel
00:58
Jesser
Рет қаралды 29 МЛН
ROSÉ & Bruno Mars - APT. (Official Music Video)
02:54
ROSÉ
Рет қаралды 309 МЛН
Кто круче, как думаешь?
00:44
МЯТНАЯ ФАНТА
Рет қаралды 1,2 МЛН
초등학생도 이해하는 프로그래밍 기초
6:45
마크의 지식서재
Рет қаралды 278 М.
포인터가 뭐고 왜 쓰는건가요?
8:07
얄팍한 코딩사전
Рет қаралды 122 М.
C언어 자료구조나 알고리즘 공부가 어려운 현실적 이유
8:52
널널한 개발자 TV
Рет қаралды 24 М.
평생 써먹는 코딩 공부 순서, 코딩 고수는 보지 마세요!
15:02
스파르타 연구소
Рет қаралды 251 М.
Random Emoji Beatbox Challenge #beatbox #tiktok
00:47
BeatboxJCOP
Рет қаралды 58 МЛН