수다닷컴

  • 해외여행
    • 괌
    • 태국
    • 유럽
    • 일본
    • 필리핀
    • 미국
    • 중국
    • 기타여행
    • 싱가폴
  • 건강
    • 다이어트
    • 당뇨
    • 헬스
    • 건강음식
    • 건강기타
  • 컴퓨터
    • 프로그램 개발일반
    • C언어
    • 비주얼베이직
  • 결혼생활
    • 출산/육아
    • 결혼준비
    • 엄마이야기방
  • 일상생활
    • 면접
    • 취업
    • 진로선택
  • 교육
    • 교육일반
    • 아이교육
    • 토익
    • 해외연수
    • 영어
  • 취미생활
    • 음악
    • 자전거
    • 수영
    • 바이크
    • 축구
  • 기타
    • 강아지
    • 제주도여행
    • 국내여행
    • 기타일상
    • 애플
    • 휴대폰관련
  • 프로그램 개발일반
  • C언어
  • 비주얼베이직

동적할당에 대한 함수사용시 종료하는 이유가 궁금합니다. 그리고 추가로하나...

화1이트

2023.04.01

질문 제목 : 동적할당에 대한 함수사용시 종료하는 이유가 궁금합니다.동적할당에 대한 함수사용시 종료하는 이유가 궁금합니다.질문 내용 :

malloc, calloc, realloc모두...

가지고 있는 책이나, 인터넷을 둘러봐도 null을 반환하면 종료한다는 글만 있을 뿐,

다시 포인터를 구하려고시도하지는않더라구요.

한 번 시도했을때 이미 사용될 장소가 모자라기에 다시 시도할 가치가 없는 것인건가하고 추측은 해봅니다만,
이런 쪽으로 경험이 전무하다보니 그닥 상상이 가질 않습니다.

특히, 고가의 장비들이나 반드시 24시간풀가동해야하는 소프트웨어의 경우 메모리체크에 실패했다는 이유만으로
종료시킨다는 건 소프트웨어의 가격값을 못하는게 아닌가하구요.

실제로 가끔 고사양의 게임을 돌릴때같을땔 보면 가상메모리가 부족하다고 열심히 창올리면서 실행은 잘만 되더라구요 -_- ;
좀 느려서 그렇지...

줄이자면, 왜 동적메모리할당에 실패할시 재시도하지않고 프로그램을 종료하는가? 입니다.

그리고 두번째 질문.

전에 쓴 글에서 수다님께서 친절하게 답변해주셔서 여러모로 생각해보았습니다만,

int *a, *b;
a = (int *)malloc(sizeof(int)*20);
b = (int *)realloc(a,sizeof(int)*40);
free(a);
a = b;

이 성공적으로 수행될때(null인 값은 고려하지않음)

a와 b가 가리키는 포인터값이 동일하다면, a의 주소에 있는 메모리를 돌려보냈으므로
b에 추가로 늘린 메모리의 반이 뚝하고 날라가버리는게 아닌가하고 생각합니다만....

그렇게되면 마지막에 a가 가리키는 포인터값자체가 무의미해지는 것이 아닌가합니다.

그래서 제 생각으론

int *a, *b;
a = (int *)malloc(sizeof(int)*20);
b = (int *)realloc(a,sizeof(int)*40);
if(a!= b) free(a);
a = b;

처럼 if문으로 주소값이 같지않을때만 처리하도록하는게 맞지않을까 생각하고 있습니다.
a의 포인터가 b가 가진 범위내에 속하게된다는 건 a의 포인터를 구지바꾸지않아도 메모리확장이 가능하다는 말이므로
그런 조건까지는 붙일 필요가 없다고 생각되구요.

신청하기





COMMENT

댓글을 입력해주세요. 비속어와 욕설은 삼가해주세요.

번호 제 목 글쓴이 날짜
2700264 문자와 숫자 동시에 입력??? 글고운 2025-07-03
2700236 txt파일로만 쓰고 읽게 하려면 어떻게 해야 하나요..?? (8) 미국녀 2025-07-03
2700211 전위 연산자 (2) 어른처럼 2025-07-02
2700183 C에서 파일이름을 받고, 그 파일의 사이즈를 출력해줘야하는데 내용이 출력이 안되네요 ;ㅅ; 피스케스 2025-07-02
2700150 꼭좀 도와주세요ㅠㅠㅠ 호습다 2025-07-02
2700095 연산문제...질문... 오빤테앵겨 2025-07-01
2700070 while문 , 3의배수 출력하는 프로그램좀 짜주세욤. 횃불 2025-07-01
2700041 초보인데요 ㅎ 배열안에 배열을 집어넣을수 있나요?? 헛장사 2025-07-01
2700012 배열// (1) 전갈자리 2025-07-01
2699895 무한루프에 빠집니다.!! 해결좀부탁드려요 (10) 선아 2025-06-30
2699842 질문을 너무 많이 하네여.....죄송.... (2) 해님꽃 2025-06-29
2699816 오류 질문입니다.. (1) 해비치 2025-06-29
2699763 질문입니다 ! 꼭 좀 도와주세요ㅠㅠ (2) 미라 2025-06-28
2699555 c언어 다항식을 입력을 했는데 왜 출력이 안될까요? 피스케스 2025-06-27
2699528 C언어 포인터연산 질문입니다. (3) 안녕나야 2025-06-26
2699476 끌어올림;;달력 짜봤는데요 이 소스 줄일 수 있나요? - 스샷첨부 (2) 클라우드 2025-06-26
2699444 [좀 급함] system("explorer [주소] ") 문에 변수를 사용할 수 있나요? 알 2025-06-26
2699415 파일//read//와 배열 아란 2025-06-25
2699386 구조체 안에 일부분만 char 배열에 복사하려면 어떻게 해야하나요? (1) 미즈 2025-06-25
2699361 연결리스트 정렬하는 부분에 대해서 질문 드립니다 아이처럼 2025-06-25
<<  이전  1 2 3 4 5 6 7 8 9 10  다음  >>

수다닷컴 | 여러분과 함께하는 수다토크 커뮤니티 수다닷컴에 오신것을 환영합니다.
사업자등록번호 : 117-07-92748 상호 : 진달래여행사 대표자 : 명현재 서울시 강서구 방화동 890번지 푸르지오 107동 306호
copyright 2011 게시글 삭제 및 기타 문의 : clairacademy@naver.com