디시인사이드 갤러리

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

갤러리 본문 영역

업뎃) LLM이 반복적으로 잘못된 주장을 해요 ㅎㅎ

*루비*갤로그로 이동합니다. 2025.03.19 03:20:15
조회 57 추천 1 댓글 4

아래 코드에서 제미니가 메모리릭 난다고 한.. 5차례 주장함.

저 코드 지가 예시로 든 코드임.



#include <stdio.h>

#include <stdlib.h>


typedef struct Object {

    struct Object* other;

    int ref_count;

} Object;


Object* object_new() {

    Object* obj = (Object*)malloc(sizeof(Object));

    obj->other = NULL;

    obj->ref_count = 1;

    return obj;

}


void object_unref(Object* obj) {

    if (--obj->ref_count == 0) {

        free(obj);

    }

}


int main() {

    Object* obj1 = object_new();

    Object* obj2 = object_new();


    obj1->other = obj2;

    obj2->other = obj1;


    // obj1과 obj2를 더 이상 사용하지 않음

    object_unref(obj1);

    object_unref(obj2);


    // 여기서 메모리 누수 발생!


    return 0;

}


그래서 내가 valgrind로 메모리릭 없다고 입증했는데도, 제미니가 맞다고 그래놓고, 재질문하면 메모리 누수있다고 구라치고..

그걸 한 5차례 반복하다다가...

결국 내가 질문을 디게 길게 작성.



항상 ref_count++, ref_count-- 가 쌍으로 사용되어야 한다. 사람이 반자동으로 ref_count를 증가/감소시키는 것이라 설마 순환참조가 되더라도, 메모리릭이 발생하지 않는다. 만약 메모리릭이 발생한다면 ref_count++, ref_count-- 가 쌍으로 사용되지 않았거나, 이벤트 루프, 또는 스레드를 돌면서 ref_count 를 감소시키는 부분이 아직 평가가 되지 않은 경우에는 메모리릭이 발생할 수 있다. 그렇지만 의도한 대로 항상 ref_count++, ref_count-- 가 쌍으로 코딩되어 있고, 코드 상에서 어떠한 작업이 끝나는 부분에 ref_count-- 부분이 누락되어 있지 않으면 이론적으로 메모리릭은 발생하지 않는다고 보면 된다. 내 말이 맞느냐?



네, 말씀하신 내용은 대체로 맞습니다. ref_count++와 ref_count--가 항상 쌍으로 사용되고, 코드 상에서 누락된 ref_count-- 부분이 없다면 이론적으로 메모리 누수는 발생하지 않습니다. 하지만 몇 가지 추가적인 고려 사항이 있습니다.


핵심 요약:


정확한 쌍의 사용: ref_count++와 ref_count--가 정확히 쌍으로 사용되면 메모리 누수를 방지할 수 있습니다.

누락된 감소 연산의 부재: 코드의 모든 실행 경로에서 객체가 더 이상 필요하지 않을 때 ref_count--가 호출되어야 합니다.

이벤트 루프 및 스레드: 이벤트 루프나 스레드 환경에서는 객체의 수명이 명확하지 않을 수 있으므로, ref_count 관리 시 주의가 필요합니다.

순환 참조: 순환 참조는 ref_count가 정확히 관리되더라도 메모리 누수를 발생시킬 수 있는 예외적인 상황입니다.

추가 설명:


이벤트 루프 및 스레드:

이벤트 루프나 스레드 환경에서는 객체의 수명이 다른 이벤트나 스레드의 실행에 따라 달라질 수 있습니다.

따라서 ref_count를 감소시키는 시점을 정확히 판단하기 어려울 수 있으며, 이로 인해 메모리 누수가 발생할 수 있습니다.

이러한 환경에서는 객체의 소유권을 명확히 하고, 객체의 수명을 관리하는 추가적인 메커니즘이 필요합니다.

순환 참조:

순환 참조는 객체 간의 참조 관계가 순환 형태를 이루는 경우를 말합니다.

이 경우, ref_count가 정확히 관리되더라도 객체들이 서로를 참조하고 있기 때문에 ref_count가 0이 되지 않아 메모리 누수가 발생할 수 있습니다.

순환 참조를 해결하기 위해서는 약한 참조(weak reference)를 사용하거나, 객체 소유권을 명확히 하는 등의 추가적인 기법이 필요합니다.

결론:


ref_count++와 ref_count--를 쌍으로 정확히 사용하고, 누락된 감소 연산이 없다면 대부분의 경우 메모리 누수를 방지할 수 있습니다.

하지만 이벤트 루프, 스레드, 순환 참조 등의 예외적인 상황에서는 추가적인 주의와 관리가 필요합니다.

순환참조는 ref_count 와는 별개의 문제이다.



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


구글 제미니가 메모리릭이 없는데 있다고 한 5차례 이상 박박 우기는 건.. 제미니 설계 결함인가?

내가 valgrind로 입증을 해줬는데도 재질문하면 메모리릭 있다고 박박우겨.

제미니 특: 아집 겁나 쎔. ㅎㅎㅎ


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


결론은:

C를 사용하여 레퍼런스 카운팅을 활용하여 메모리 관리를 하게 되면 완전 자동이 아닌 반자동으로 하게 된다.

그래서 순환참조가 되더라도 ref count 증가/감소가 쌍으로 코드 상에 명확히 들어가 있으면

메모리릭이 이론적으로 발생하지 않는다는 것이다.

추천 비추천

1

고정닉 0

0

댓글 영역

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

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 제목 글쓴이 작성일 조회 추천
설문 팬덤 때문에 오히려 여론이 나빠진 스타는? 운영자 25/03/17 - -
공지 프로그래밍 갤러리 이용 안내 [87] 운영자 20.09.28 42496 64
2832004 win api 쓰면안됨? 프갤러(211.234) 12:36 0 0
2832003 EasyHo 군입대사실아니야 ㅇㅇ(211.246) 12:36 1 0
2832002 [자유 대한민국] UPI, 윤 대통령 탄핵하면 큰 일! 프갤러(121.172) 12:36 13 0
2832001 자바가 병신인 이유 ㅇㅅㅇ [1] 프갤러(211.234) 12:36 5 0
2832000 '긴박했던 일주일' 홈플러스와 신영증권 간 전단채 전말 취재 발명도둑잡기갤로그로 이동합니다. 12:34 1 0
2831999 슬슬 진입할 때가 온거같다 공기역학갤로그로 이동합니다. 12:34 6 0
2831998 LLM) libuv vs C++ 표준 Asio 성능 비교 *루비*갤로그로 이동합니다. 12:34 5 0
2831997 근데 진짜 어지간해서 안 되는거 없긴 함 ㅇㅅㅇ [6] 강유현갤로그로 이동합니다. 12:32 21 0
2831996 C#이 병신인 이유 [2] 프갤러(211.234) 12:31 15 0
2831995 진짜 보도방 걍 다닐까 고민되는데 ㅇㅅㅇ [4] 강유현갤로그로 이동합니다. 12:29 14 0
2831994 웹사이트 비밀번호 해킹해주는 업체 없나 [2] ㅇㅇ(211.234) 12:24 16 0
2831993 웹 이론은 아는데 실제 만들어볼 시간은 없는듯 [7] ㅆㅇㅆ찡갤로그로 이동합니다. 12:23 23 0
2831992 Wpf할줄 알긴한데 이거 수요있냐 [7] ㅆㅇㅆ찡갤로그로 이동합니다. 12:20 28 0
2831991 c#과 자바의 차이는 프갤러(211.234) 12:19 13 0
2831990 근데 코딩은 뭐든 하면 되지 않나 [5] ㅆㅇㅆ찡갤로그로 이동합니다. 12:18 25 0
2831989 내란수괴 리죄명 사형 준비 ♥냥덩이♥갤로그로 이동합니다. 12:15 7 0
2831988 50년 된 세계 최초의 노트북은 아직도 돌아갈까? (직접 켜봄) [1] 발명도둑잡기갤로그로 이동합니다. 12:15 11 0
2831987 이년 짱깨임? 충격이네;; ♥냥덩이♥갤로그로 이동합니다. 12:11 13 0
2831986 Ruby는 아름다운거 같은데 Ruby충은 병x이군요 ^^ 디라이더갤로그로 이동합니다. 12:07 11 0
2831985 [단독] 백종원 새마을식당 '직원 블랙리스트' 정황 논란…계속되는 구설 발명도둑잡기갤로그로 이동합니다. 12:05 8 0
2831984 문서작성 싫당 ♥냥덩이♥갤로그로 이동합니다. 12:05 6 0
2831983 LLM한테 포팅 시켜 봐야지 ㅋㅋ *루비*갤로그로 이동합니다. 12:03 8 0
2831982 C# 개발자 고가 팜니다 ㅇㅅㅇ [7] 강유현갤로그로 이동합니다. 12:02 29 0
2831981 수업 진도를 못따라가겠어.............. [6] 따봉여닝갤로그로 이동합니다. 11:59 29 0
2831980 프로파일 생성기 만들었어요 [6] PyTorch갤로그로 이동합니다. 11:59 35 1
2831979 귀염욤 ♥냥덩이♥갤로그로 이동합니다. 11:55 14 0
2831978 "서울특별시 '청년안심주택' 근황... 안심주택도 전세 사기당한다" 발명도둑잡기갤로그로 이동합니다. 11:46 7 0
2831977 구직스킬 C#류 비기 사용해야겠음 ㅇㅅㅇ [6] 강유현갤로그로 이동합니다. 11:43 39 0
2831976 와... 대박.. LLM이 준 소스코드 자세히 보니... [2] *루비*갤로그로 이동합니다. 11:41 27 0
2831975 40만원정도 선으로 코딩용 노트북 있을까요? [1] 디라이더갤로그로 이동합니다. 11:36 16 0
2831974 usb키로거 판매하는곳이 한국에도 있어? [4] 프갤러(222.110) 11:35 17 0
2831973 기각은 확정 ♥냥덩이♥갤로그로 이동합니다. 11:33 18 1
2831971 근데 ai는 왜 비동기 코딩을 잘 못할까 [3] ㅆㅇㅆ찡갤로그로 이동합니다. 11:30 26 0
2831970 근데 프리면 대부분 프로젝트 단위로 계약함 ㅇㅅㅇ? [3] 강유현갤로그로 이동합니다. 11:28 23 0
2831969 프갤 굽삣삐들 집합 [4] ㅆㅇㅆ찡갤로그로 이동합니다. 11:26 29 0
2831968 아동학과 출신 개발자 >>> 굽삐 ㅇㅅㅇ [2] 강유현갤로그로 이동합니다. 11:25 24 0
2831967 ❤✨☀⭐나님 시작합니당⭐☀✨❤ ♥냥덩이♥갤로그로 이동합니다. 11:25 12 0
2831966 미국에서 쫓겨난 남아공 대사, 대체 무슨 말을 했길래? 발명도둑잡기갤로그로 이동합니다. 11:23 12 0
2831965 나님 질문 받는다 딱님갤로그로 이동합니다. 11:22 9 0
2831964 근디 기술 개발팀이 없으면 mvp로 리팩토링안하고 ㅆㅇㅆ찡갤로그로 이동합니다. 11:20 18 0
2831963 면접 2연벙 먹었네 ㅇㅅㅇ [2] 강유현갤로그로 이동합니다. 11:19 35 0
2831962 응우옌똥튀김흑두루미튀기튀기흑튀기 씨발년아 [13] 멍청한유라ㅋ갤로그로 이동합니다. 11:17 43 0
2831961 깨달아라 ㅆㅇㅆ야.. 언어는 논리를 담는 그릇 [3] ㅆㅇㅆ찡갤로그로 이동합니다. 11:14 32 0
2831959 이직사유 말할때 마법의 단어가 있더라 ㅇㅅㅇ [12] 강유현갤로그로 이동합니다. 11:11 50 0
2831957 저라는 개발자 시간 10300원에 고용하실분구합니다 [4] ㅆㅇㅆ찡갤로그로 이동합니다. 11:08 40 0
2831956 프로그래밍 외주 맡길건데 질문좀!! [6] Ignotus갤로그로 이동합니다. 11:06 41 0
2831955 ai 가 개발을 어떻게해 *루비*갤로그로 이동합니다. 11:06 20 0
2831954 미개한 C++로는 절대로 불가능한 것.code [1] 디라이더갤로그로 이동합니다. 11:06 31 0
2831953 카카오헤어샵 떨어짐 ㅇㅅㅇ 흑흑 [6] 강유현갤로그로 이동합니다. 11:05 32 0
뉴스 ‘장윤정♥’ 도경완, 쌍꺼풀 수술로 몰라보게 변한 얼굴 공개 디시트렌드 03.18
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2