디시인사이드 갤러리

갤러리 이슈박스, 최근방문 갤러리

갤러리 본문 영역

어제 C++ 코드짠거 버그 생긴다고 푸념한 게이인데

ㅇㅇ(125.134) 2024.11.30 11:13:11
조회 58 추천 0 댓글 3


일단 해결은 했음.

전체 코드 정리하기엔 너무 복잡해져서, 중요한 부분만 얘기하자면



기본적으로 Temp로 nMAX_LINE_CHARS+1 만큼 읽으면서

AllBuf의 크기를 늘리면서 덧붙이는 구조임.


---------------------------------------------------------------------------------------------------------

char* pszAllBuf = NULL;

char* pszTemp = new char[nMAX_LINE_CHARS + 1];

...


while(true){

  ..(1)

  memset((void*)pszTemp, '\0', nMAX_LINE_CHARS + 1);

  bReadData = (NULL != fgets(pszTemp, nMAX_LINE_CHARS + 1, m_pStream));

  memcpy(pszTemp를 pszAllBuf로 복사)

  ..(2)

}

...

if (pszTemp) delete [] pszTemp;

---------------------------------------------------------------------------------------------------------

*최종적으로 pszAllBuf를 얻음




대충 이런구조임.(간단한 부분만 써놔서 뭔가 빠진거 같지만 대충 할건 다했음)

(쓰고보니 코드가 C++ 스타일이 아니긴 한데 new ~ delete가 문제니까 맞긴 함)


그런데 읽는게 줄단위인데

처음에는 괜찮은데

빈줄이 나타나는 순간 그 밑으로는 앞부분이 이상하게 다음 값으로 채워짐.

pszTemp는 멀쩡한데, 받는 변수가 이상해짐.


"니가 뭔가 이상하게 병신같이 짰겠지.."라고 생각하겠지?

저게 다른데서 받은 class 파일에 안에 새로 함수를 작성한건데,

새 함수니까 그대로 옮겨서 새로 테스트 프로젝트 만들어서 main 함수에서 돌리니까 멀쩡해짐.

프로젝트 옵션도 동일하게 맞췄고, 생기는 버그 자체가 일부 이상이기 때문에 옵션같은거 문제는 아님.

(옵션 문제면 전체가 비정상이 됨. 전체가 이상하면 오히려 오래 걸릴문제가 아님.)



적어도 논리적인 실수는 아마도 아닌거 같음.

나도 전체 코드 올리고는 싶은데, 

저거 원인 찾는다고 테스트 코드 잔뜩 추가해서 주석 덩어리된 난장판 코드를 올리기도 싫고, 

그걸 새로 정리하기도 귀찮음. 미안.





아차차,

해결한 방법을 얘길 한다는걸 깜빡했네.

두 가지가 있음.(둘 중 하나만 하면 됨)


1. 위에 while루프 속에 ..(1) ..(2) 자리에 아래 코드 추가해서 넣으니 해결

   ..(1) pszTemp = new char[nMAX_LINE_CHARS + 1];

   ..(2) delete [] pszTemp;

   이렇게 하면 메모리 누수는 없는데, 루프 돌때마다 버퍼를 계속 새로 만든다는게 엿같음.


2. char* pszTemp = new char[nMAX_LINE_CHARS + 1];

   ->

   char* pszTemp[nMAX_LINE_CHARS + 1] = {0,};

   위와 같이 동적이 아닌 정적 배열로 만듬.

   물론 저렇게 하니까 포인터 문제 생겨서 (char *) 로 캐스팅 필요한 부분은 다 했음.

   delete [] pszTemp; 이거도 지우고.


동일한 코드에 딱 저 부분들만 바꾼거.


해법만 봐도 뭔가 논리적 문제는 아닌거 같지? ㅠㅠ

뭔가 배열에 lock을 걸어놓은 느낌임. 물론 멀티쓰레드 아님.


애초에 내가 논리적 구성을 잘못했으면 1,2번 해법과 

main함수에 그대로 복제해서 해결되면 안되는 문제임 ㅠㅠ


아무튼 한 건 해결. ㅠㅠ



추천 비추천

0

고정닉 0

0

댓글 영역

전체 댓글 0
등록순정렬 기준선택
본문 보기

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 제목 글쓴이 작성일 조회 추천
설문 오픈 마인드로 이성을 만날 것 같은 스타는? 운영자 24/12/02 - -
2778958 지하철에 개 갖고 타도 되는거였나? [1] 발명도둑잡기갤로그로 이동합니다. 11.30 39 0
2778957 사기업도 생각보다 잘 안짤려 [6] 버거띠갤로그로 이동합니다. 11.30 104 0
2778956 ai수준을 알려줌 젠슨황 뒷통수한방(1.213) 11.30 47 0
2778953 자본주의 사회는 늦게 태어나는게 항상 죄네 [5] 프갤러(58.237) 11.30 50 0
2778952 9급 > 중견 보다 위라는 인식이네 다들.. [9] 프갤러(211.33) 11.30 66 0
2778951 호두는 영어로 호날두 재현갤로그로 이동합니다. 11.30 36 0
2778949 중소에서 중견 이직도 하늘에 별따기냐..? [11] 프갤러(211.33) 11.30 95 0
2778946 관점 발명도둑잡기갤로그로 이동합니다. 11.30 18 0
2778945 너의 가치는 너가 애새끼 번식할때 만들어지고 증명된다 ㅋ 뒷통수한방(1.213) 11.30 28 0
2778944 스위치 발명도둑잡기갤로그로 이동합니다. 11.30 62 0
2778942 국힘 찍어서 가시적인 소득세 내린다하는데 대부분 건물,기업 오너 위주라 [22] ㅆㅇㅆ(124.216) 11.30 93 6
2778939 방통대 시험 보러왔다 [3] 아스카영원히사랑해갤로그로 이동합니다. 11.30 49 0
2778936 정치는 모르겠고 세금 때문에 보수당 찍을거야 [2] 버거띠갤로그로 이동합니다. 11.30 43 0
2778933 중국 foever사 전기자전거 샀는데 발명도둑잡기갤로그로 이동합니다. 11.30 23 0
2778932 오늘 홍대 가려다 ㅇㅅㅇ AppHiki갤로그로 이동합니다. 11.30 27 0
2778930 it는 특히 si는 고수익 업종이다 버거띠갤로그로 이동합니다. 11.30 91 0
2778929 그래도 아직 주도적으로 해보라는 주문이 들어오면 어려움 [2] 공기역학갤로그로 이동합니다. 11.30 46 0
2778927 ㄹㅇ 좇센it 가 우파임?? 뒷통수한방(1.213) 11.30 35 0
2778925 국민대 소프트웨어 전공 학생 작품 [1] 발명도둑잡기갤로그로 이동합니다. 11.30 75 0
2778923 지하철 탔는데 발명도둑잡기갤로그로 이동합니다. 11.30 24 0
2778922 질문 받는다 [8] 딱님갤로그로 이동합니다. 11.30 61 0
2778920 요즘 점점 급발진하는 비율이 늘어나고있음 [3] 공기역학갤로그로 이동합니다. 11.30 76 0
2778917 ㅍㅌㅊ? [2] ㅇㅇ(118.235) 11.30 52 1
2778916 미국처럼 못하면 직장 빨리 짤라야된다 [3] 버거띠갤로그로 이동합니다. 11.30 71 1
2778914 it쪽이 좌파가 많은이유가 뭐냐 [3] 뒷통수한방(1.213) 11.30 52 0
2778912 못하는데 열심히 하는 후임이 있음 [4] 버거띠갤로그로 이동합니다. 11.30 78 0
2778911 솔직히 우리팀 상사 너무 무능하다 [3] 버거띠갤로그로 이동합니다. 11.30 72 0
2778909 10년에 걸친 스토킹이 빛을 발휘할때가 온거같음 [10] 공기역학갤로그로 이동합니다. 11.30 86 0
2778907 요즘 난 극심한 우울감, 권태감, 무기력증, 외로움에 시달리고 있다 [2] 딱님갤로그로 이동합니다. 11.30 57 0
2778904 30살 먹고 이룬 거 좆도 없는 도태남도 세상에서 영향력을 행사 [4] 딱님갤로그로 이동합니다. 11.30 62 0
2778903 좇센 보안체계는 점점 갈수록 좇같아지냐 ㄹㅇ 뒷통수한방(1.213) 11.30 31 0
2778899 경력 이직하는데 무슨 개인프로젝트들 한다던데..ㅋㅋㅋ [2] 프갤러(211.33) 11.30 95 0
2778897 노말틱은 왜 유명해진거냐 ㅇㅇ [1] 뒷통수한방(1.213) 11.30 37 0
2778896 인생을 망치는 3가지 [1] 프갤러(211.234) 11.30 57 0
2778893 풀재택에 얼마까지 포기가능하냐 [6] 프갤러(119.194) 11.30 82 0
2778891 수학? 코드? IDE? Rx Framework를 사용하세요. 프갤러(121.172) 11.30 45 0
2778890 니들이 뉴진스라면 5천억걸고 계약해지싸움 하냐? [4] 헬마스터갤로그로 이동합니다. 11.30 50 0
2778887 내 코드 보면 개못적어서 우울증 걸릴거같아서 코딩 못할거 같은데 정상이냐 [2] ㅆㅇㅆ(124.216) 11.30 66 1
2778884 우왁굳 알고리즘도 슬슬 단물 빠지는군 [2] 헬마스터갤로그로 이동합니다. 11.30 65 0
2778882 파이썬을 사용하는 이유를 도통 모르겠다. [1] 프갤러(59.16) 11.30 49 0
2778880 회사 사람들하고 어떤 형태의 인간 관계를 맺을 지는 [8] 딱님갤로그로 이동합니다. 11.30 81 1
2778879 동탄 가는 중 [3] 발명도둑잡기갤로그로 이동합니다. 11.30 46 0
2778878 하 서울사람들 왜 어제오늘 약속시간에 늦어놓고 [2] 갤로그로 이동합니다. 11.30 40 0
2778876 프로그래밍 시작하고 교재들 사서 존나 읽었는데 어리석었던듯. ㅆㅇㅆ(124.216) 11.30 41 1
2778875 윈도우 디펜더 개표독해졌네 [1] 공기역학갤로그로 이동합니다. 11.30 53 0
2778873 근데 GPT<<이새끼 100줄 이상 넘어가면 오류 존나 내지 않냐 ㅆㅇㅆ(124.216) 11.30 28 1
2778872 오늘 공부할것 [3] 공기역학갤로그로 이동합니다. 11.30 34 1
2778869 근데 나이가 들수록 수학푸는거랑 다까먹음 ㅆㅇㅆ(124.216) 11.30 36 1
2778853 회사사람 무시하고 지내는방법 없냐 [3] ㅇㅇ(211.234) 11.30 58 0
2778851 속보) 노무현 일본에서 연설 조커갤로그로 이동합니다. 11.30 39 0
뉴스 전자음악 힙합 듀오 힙노시스테라피, 멜론 트랙제로 ‘12월 이달의 아티스트’ 선정 디시트렌드 10:00
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2