수다닷컴

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

switch문과 전역변수 malloc 선언 관련 질문

아더

2023.04.01

질문 제목 : switch문과 전역변수 malloc선언관련 질문질문요점이 2가지라 제목에 한꺼번에 넣을 수가 없었어요...질문 내용 :

한 선배님이 내주신 과제에서 제 코딩을 보고는
이번에 코딩을 하면서 malloc함수는 함수 안에서 사용할 경우 함수가 끝나기 전에 free함수로 끝을 내는게
가장 효율적이라는 얘기를 들었어요

그러면서 제가 코딩했던 부분에서 일부 수정을 하라고 해서 수정을 했죠

그러한 과정에서 의문점이 2가지 들었습니다.

============================================================================

전역변수로 malloc함수를 이용한 변수를 하나 선언하고
#define size 2048
char* buf=(char*)malloc(sizeof(size))

enum {odd=1,even}; // switch문에서 원하는 출력값을 나오게 하고자 선언
...

void readfile(char* buf) //buf를 매개변수로 불러들여서 파일의 데이터를 읽어들임
{
file* file=fopen(test.txt,rt);
fread(buf,char,size,file);
}

void print(int select)
{
int num=0; // 반복문 증가값

switch(select)
{
case odd :
{

for(...)
{
if(..........)
}
break;

}

case even :
{

for(...)
{
if(..........)
}
break;
}

// free(buf);
// free=null;

}
// free(buf);
// free=null;

}

void odd(char* input) // 여기서 input은 main에서 받은 간단한 명령어 정도로 생각하시면 됩니다
{
readfile(buf);
print(1);// 홀수의 값을 나타내고자 열거형 odd=1을 매개변수 선언
}

============================================================================
일단 코딩 내용을 올릴 수가 없기에 비슷한 제가 짠 내용을 토대로 만들어봤습니다

먼저 2가지 의문점이 들었습니다.

1. switch문 안에서 for문을 사용하는 것이 효율적인가요?
이번에 switch문 안에서 for문 사용은 처음이라 그 부분이 궁금해지더라구요...

2. 전역변수 buf를 선언하고 나중에 swtich문을 다 끝내고 나서
buf를 free함수로 메모리 삭제를 할려고 하는데
이상한 부분은 첫번째 주석의 buf에 놓으면 문제없이 잘 돌아가는데...
두번째 주석의 buf에 놓으면.
디버그 시 아래와 같은 에러명이 뜹니다

windows has triggered a breakpoint in comment.exe
this may be due to a corruption of the heap, which indicates a bug in
comment.exe of any of the dlls it has loaded.
this may also be due to the user pressing f12 while comment.exe has focus.
the output output window may have more diagnostic information.

첫번째 buf와 두번째 buf의 차이를 모르겠네요....

어떤 부분이 잘못 된것일까요?

답변 부탁드립니다...

신청하기





COMMENT

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

번호 제 목 글쓴이 날짜
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
2699304 [기초]아직 안주무시는분 계신가요..?포인터배열? 좀 도와주세요. 놀리기 2025-06-24
2699272 printf() 함수이용해서 프로그램 만들기 질문요! (5) 다가 2025-06-24
2699221 PUSH와 POP코드를 더 간단하게 어떻게 해야할까요? 파라미 2025-06-24
2699192 설치오류가 자꾸 나요 한번봐주세여~ (1) 소녀틳향기 2025-06-23
<<  이전  1 2 3 4 5 6 7 8 9 10  다음  >>

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