디시인사이드 갤러리

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

갤러리 본문 영역

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

*루비*갤로그로 이동합니다. 2025.03.19 03:20:15
조회 60 추천 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 42499 64
2832073 c로 불가능한 oop말하라니까 말하면서 내가 틀렸다고 풀발하는건 머냐 [7] 공기역학갤로그로 이동합니다. 16:24 19 0
2832072 행님들 si sm공공하시는분들 있나요 [2] ㅇㅇ(117.111) 16:23 11 0
2832071 참고로 리누스가 C로 OOP할 수 있다고 했다만은 ㅆㅇㅆ(124.216) 16:19 13 0
2832070 안 되겠다 빨리 빨리 작성해야겠다. *루비*갤로그로 이동합니다. 16:19 5 0
2832069 아버지 퇴직하셔서 은퇴하심. 무릎이 안 좋아서, 넥도리아(121.139) 16:13 14 0
2832068 나도 수학잘해서 학창시절에 칭찬받고싶었는데 디라이더갤로그로 이동합니다. 16:12 8 0
2832067 객체지향은 C로 하기 힘들지. 그러니까 오브젝티브 C 나온거고 ㅆㅇㅆ(124.216) 16:11 18 0
2832066 공기역학 <- 얘 루비랑 친구 아니었음? [1] 프갤러(223.38) 16:08 20 0
2832065 1인 웹 개발 하고싶은데 프갤러(121.187) 16:08 11 0
2832064 수리부서가 없어서... 도리스아(112.170) 16:05 8 0
2832063 java 랑 c랑 뭐가다르냐 하는 애들 특 [13] 프갤러(114.205) 16:04 53 0
2832062 님들 님들 급함 [2] 프갤러(114.71) 16:01 20 0
2832061 C 언어를 배우는 이유 [4] *루비*갤로그로 이동합니다. 15:55 51 1
2832060 행복을 목표하는거라고 가르치는 교육자체가 잘못된거같음 [2] 공기역학갤로그로 이동합니다. 15:45 23 0
2832059 코테 언어 뭐가 좋음? [8] 프갤러(183.100) 15:43 41 0
2832058 안드로이드로 제작된 앱 JSP서버로 포팅하려면 얼마나 걸려? 디라이더갤로그로 이동합니다. 15:41 10 0
2832056 내 친척 네이버들어가겠다고 대학원 간다는데 [5] ㅇㅇ(211.234) 15:27 45 0
2832055 나님 오늘부터 zephyr rtos 수련에 들어가시다 딱님갤로그로 이동합니다. 15:24 13 0
2832053 Ruby가 좋은 이유를 코드로 설명.ruby 디라이더갤로그로 이동합니다. 15:11 17 0
2832052 섹스 ♥냥덩이♥갤로그로 이동합니다. 15:07 14 0
2832051 자바 백엔드 강의는 김영한만 보면 취업가능? [2] 프갤러(108.181) 14:46 38 0
2832050 정처기 해야할게 많노무현 [6] ㅇㅇ(211.234) 14:42 52 0
2832049 자바스크립트 질문좀(글 제대로 수정함) 디라이더갤로그로 이동합니다. 14:40 17 0
2832048 니들은 JDK 벤더 어디꺼 머쓰냐 ㅇㅅㅇ? [2] 강유현갤로그로 이동합니다. 14:36 23 0
2832047 나님은 20대에 한달 250씩 저축하는 초부르주아월급쟁이야 [10] 아스카영원히사랑해갤로그로 이동합니다. 14:27 76 0
2832045 [자유 대한민국] MBC는 공영 방송으로써 실격! 프갤러(121.172) 14:21 23 0
2832044 진짜 취업이 안되는데 어떡하냐?.ssul [3] 프갤러(58.225) 14:16 49 0
2832043 SI는 종착지로서는 괜찮을거 같은데 뉴비가 들어갔다간 좆망하는구나 ㅇㅅㅇ [4] 강유현갤로그로 이동합니다. 14:13 64 0
2832042 오픈소스로 돈 번 사례 발명도둑잡기갤로그로 이동합니다. 14:11 26 0
2832041 자바 스레드 동기화 쩌네 디라이더갤로그로 이동합니다. 14:10 26 0
2832040 나보고 책임감좀 가지라길래 [4] ㅇㅇ(211.234) 13:57 74 0
2832039 와 시발 프리 손해배상 조항 있어서 안 함 ㅅㄱ 날렸는데 [6] 강유현갤로그로 이동합니다. 13:53 66 0
2832038 옛낳에는 화장실에서 담배피면서 끙야 했었더렸죠 ♥냥덩이♥갤로그로 이동합니다. 13:52 22 0
2832037 나님 끙야즁 ♥냥덩이♥갤로그로 이동합니다. 13:49 22 0
2832036 최근에 AI기업들은 Vibe코딩을 파는데 이건 상술인듯 [2] ㅆㅇㅆ찡갤로그로 이동합니다. 13:47 35 0
2832035 나 어떤 공부를 해야할까?? 요즘 좀 막막해 [8] 프갤러(115.138) 13:45 74 0
2832034 요즘 국비 멋있네 ㅇㅅㅇ ㅋㅋ [2] 강유현갤로그로 이동합니다. 13:44 72 0
2832033 내가 가려는 분야는 신입애들은 다 바를자신있는데 [11] 공기역학갤로그로 이동합니다. 13:40 59 0
2832032 당신의 뒷조사를 할때 사용되는 안드로이드폰(맛폰으로 보세요, 엑박이면 X 디라이더갤로그로 이동합니다. 13:39 17 0
2832031 [내일배움캠프] PM 부트캠프 프갤러(14.32) 13:31 22 0
2832030 자바 개발하는데 이클립스나 인텔리제이 안쓰고 vscode 써야될 이유 [7] 먹는거좋아해갤로그로 이동합니다. 13:31 48 0
2832029 CTO 아조씨들 ㅇㅇ(211.219) 13:30 23 0
2832028 이제 아픈거 싹 나은거 같군 *루비*갤로그로 이동합니다. 13:22 18 0
2832027 아.. 흠.. 결자어ㅐㅆ따 [1] *루비*갤로그로 이동합니다. 13:21 25 0
2832026 비전공자 매장 공지사항용 간단한 앱 만드려는데 개발환경 추천좀 [9] 김사쵸갤로그로 이동합니다. 13:14 50 0
2832025 회사에서 cto 새로 뽑을거라는데 지금 cto는 [2] ㅇㅇ(211.36) 13:14 36 0
2832024 전 회사 계속 있을걸 그랬나 ㅇㅅㅇ [4] 강유현갤로그로 이동합니다. 13:13 49 0
2832022 국비 가보신분들 잇으실까요?? [6] PyTorch갤로그로 이동합니다. 13:08 75 0
2832021 Ruby 충새끼들은 대대손손 Ruby만 쓰시기 바랍니다. 디라이더갤로그로 이동합니다. 13:08 23 0
뉴스 하동균, 26일 이병헌 주연 영화 '승부' 컬래버 음원 '지친 하루' 발매 디시트렌드 10:00
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2