디시인사이드 갤러리

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

갤러리 본문 영역

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

ㅇㅇ(125.134) 2024.11.30 11:13:11
조회 57 추천 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 - -
2779198 쓰떼이블 띠쀼젼은- 프갤러(121.172) 11.30 40 1
2779197 이만 퇴근해야켓군. [1] 프갤러(121.172) 11.30 53 1
2779196 오늘의 출판 기획 실마리: 노총각이 아빠 되는 법 발명도둑잡기갤로그로 이동합니다. 11.30 22 1
2779194 오늘의 소설, 영화 실마리: 진보당원과 국민의힘 당원의 격투기 발명도둑잡기갤로그로 이동합니다. 11.30 22 0
2779193 가수는 결국 노래가 좋아야 인기있는 법임 [2] ♥불시검문냥덩♥갤로그로 이동합니다. 11.30 28 0
2779192 Sql 도와주실분…치킨 한마리라도 사례할게요ㅠㅠ [3] 프갤러(39.118) 11.30 79 0
2779191 평범한, 남들과 같은이 얼마나 하잘 것 없는 가치냐 ㅆㅇㅆ(124.216) 11.30 37 0
2779190 코딩테스트 질문 [1] ㅇㅇ갤로그로 이동합니다. 11.30 54 0
2779189 일론 머스크도 성형 했구나 발명도둑잡기갤로그로 이동합니다. 11.30 51 0
2779187 개발하다가 사회성 나락가버린 친구들 안뇽 [2] jonny갤로그로 이동합니다. 11.30 75 1
2779186 vi POSIX 표준이 보안에 주는 의미 발명도둑잡기갤로그로 이동합니다. 11.30 38 0
2779183 20살 이후 내 인생은 내가 정말 보잘것 없는 [4] 딱님갤로그로 이동합니다. 11.30 58 0
2779182 뒷벅지로 뛰려고 의식하니까 평균접촉시간 40ms나 줄었당 ♥불시검문냥덩♥갤로그로 이동합니다. 11.30 28 0
2779180 vi를 고집하는 이유가 POSIX 미제 표준이라 그렇구나 발명도둑잡기갤로그로 이동합니다. 11.30 55 0
2779178 내가 넘나 기여운게 너무 분하다 ㅇㅅㅇ… [2] AppHiki갤로그로 이동합니다. 11.30 28 0
2779177 국민의힘 222.118 아 니미 니가 감사해요 넥도리아(223.38) 11.30 36 0
2779175 보통 데이터 개많은 대기업에선 개발용 DB에도 데이터 똑같이 있음? [1] 프갤러(58.237) 11.30 44 0
2779171 1000줄 짜리 포트란 프로그램 짯다 [2] 프갤러(112.168) 11.30 61 0
2779170 너무 억울해서 죽이고싶어 [6] 주아갤로그로 이동합니다. 11.30 74 0
2779169 정말 너무 화가나고 억울하다 [3] 주아갤로그로 이동합니다. 11.30 55 0
2779166 오늩 진짜 THE 레전드 코코이 쳤음 [1] 프갤러(14.47) 11.30 35 0
2779165 맥북 케이스 만들려고 하는데 어떤 거 같음?? 창업게이(125.128) 11.30 32 0
2779164 다양한 이펙트 실험 결과 - [2] 프갤러(121.172) 11.30 44 1
2779162 오늘의 발명 실마리: 셸스크립트만으로 텍스트 에디터 만들기 발명도둑잡기갤로그로 이동합니다. 11.30 40 0
2779156 클린아키텍처 시도하다가 다 롤백중 [4] jonny갤로그로 이동합니다. 11.30 59 0
2779154 이펙트 적용 결과- [2] 프갤러(121.172) 11.30 57 1
2779152 신입면접은 생각보다 온순한 태도가 중요하다 버거띠갤로그로 이동합니다. 11.30 94 0
2779151 변수명 제네레이터 돌리면 되는데 [4] 버거띠갤로그로 이동합니다. 11.30 80 0
2779149 이펙트 리소스 하나 만들었는뎅- [2] 프갤러(121.172) 11.30 45 1
2779148 중고의류매장 갔다오셨는데 모든게 싸네. 넥도리아(112.170) 11.30 18 0
2779145 요즘 중고 매장이 핫하데 가보자. 빌딩?아닌가 넥도리아(112.170) 11.30 21 0
2779144 뭘 공개하고 삭제해 넥도리아(112.170) 11.30 25 0
2779142 좇소 연봉상승 팁 뒷통수한방(1.213) 11.30 70 0
2779138 클라우드 RX의 로고도 넣었따- 프갤러(121.172) 11.30 40 0
2779137 외국나와서 심심ㅁ하면 게임할려고 [2] 40대프린이(58.97) 11.30 72 0
2779134 코딩 구조가 문제가 되는거면 다 부수고 다시하는게 [4] ㅆㅇㅆ(124.216) 11.30 73 0
2779132 야 형님 밥 먹고 왔따. 11시까지- 프갤러(121.172) 11.30 36 1
2779131 일행들이 룸빵 가자고 하는데 귀찮네 [5] 40대푸린이(58.97) 11.30 107 0
2779130 개발자라- 나도 한 때- 프갤러(121.172) 11.30 108 1
2779129 프로그래머 재능 테스트 촌흥녘자(119.202) 11.30 66 0
2779127 초속5센티미터 주인공 있잖냐 촌흥녘자(119.202) 11.30 40 0
2779126 버전에 크다 작다는 식의 서술을 할 수 있음? [6] 프갤러(14.34) 11.30 59 0
2779123 영어로 질문하면 제대로 답하던데 뉴진파갤로그로 이동합니다. 11.30 36 0
2779122 나님 간단하게 우유 한 잔이랑 쪼코파이 먹구 주무실 예정✨ ♥불시검문냥덩♥갤로그로 이동합니다. 11.30 25 0
2779121 gpt가 병신이아니라 질문자가 병신인 이유 [2] 프갤러(119.172) 11.30 67 0
2779118 저녁을 먹고자야하나 그냥 자야하나 ♥불시검문냥덩♥갤로그로 이동합니다. 11.30 19 0
2779115 어디에나 있고 어디에도 없당 ♥불시검문냥덩♥갤로그로 이동합니다. 11.30 33 0
2779113 정국 혼란에 연예계 스캔들 경보 예측대로 발명도둑잡기갤로그로 이동합니다. 11.30 19 0
2779112 나 만두빚어옴. 내 딸 아이유 씹가능이냐?? [1] ㅇㅇ(123.213) 11.30 40 0
2779111 gpt 이새끼 진짜 개븅신이였네 [3] 뉴진파갤로그로 이동합니다. 11.30 81 0
뉴스 김수용, 尹 비상계엄 선포 겨냥…“독방은 추울텐데” 디시트렌드 12.04
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2