반응형

C 251

메모리 누수는 괜찮은가?

메모리 누수는 괜찮은가? 휴관. 이 질문은여론에 근거한그것은 현재 답을 받아들이고 있지 않다. 이 문제를 개선하고 싶으십니까?이 게시물을 편집하여 사실과 인용문으로 답변할 수 있도록 질문을 업데이트하십시오. 3년 전에 문을 닫았다. 이 질문 개선 C 또는 C++ 응용 프로그램에서 메모리 누수가 발생한 적이 있는가? 일부 메모리를 할당하고 응용 프로그램의 마지막 코드 행(예: 전역 개체의 소멸자)까지 사용하면 어떻게 하시겠습니까?시간이 지남에 따라 메모리 소비량이 증가하지 않는 한, (Windows, Mac, Linux에서) 애플리케이션이 종료될 때 OS를 신뢰하여 메모리를 확보해도 괜찮으십니까?OS에 의해 해제될 때까지 메모리가 계속 사용 중이라면 실제 메모리 누수로 간주하시겠습니까? 만약 제3의 도서관..

programing 2022.05.11

스틴트를 사용해야 하는 이유(또는 사용하지 않는 이유)

스틴트를 사용해야 하는 이유(또는 사용하지 않는 이유) 나는 이미 그것을 알고 있다.stdint플랫폼 간 이동성을 위해 특정 가변 크기가 필요할 때 사용한다.지금으로서는 그런 문제가 별로 없지만, 이미 위에서 보여진 사실 외에 그것을 사용하는 데 있어서 어떤 단점과 장점들이 있을까? 스택오버플로우 및 기타 사이트에서 이 링크를 찾으면서 테마 관련 링크 2개를 찾았다. codealias.info - 이것은 stdint의 휴대성에 대해 이야기한다. stackoverflow - uint8_t에 대해 좀 더 구체적이다. 이 두 가지 링크는 특히 이 헤더의 주요 이유인 휴대성에 대해 더 많이 알고자 한다면 아주 좋다.하지만 나에게 있어서 내가 가장 좋아하는 것은 내가 생각하는 것이다.uint8_t보다 깨끗하다un..

programing 2022.05.11

반올림 정수 분할(잘리는 대신)

반올림 정수 분할(잘리는 대신) 나는 어떻게 숫자를 가장 가까운 정수로 반올림할 수 있는지 궁금했다.예를 들어 다음과 같은 경우: int a = 59 / 4; 부동소수로 계산하면 14.75가 된다. 결과를 15로 "a"에 저장하려면 어떻게 해야 하는가?정수 반올림을 위한 표준 숙어는 다음과 같다. int a = (59 + (4 - 1)) / 4; 배당금에서 1을 뺀 값을 더하면 된다.배당금 및 배당금 부호에 적용되는 코드: int divRoundClosest(const int n, const int d) { return ((n < 0) ^ (d < 0)) ? ((n - d/2)/d) : ((n + d/2)/d); } "왜 이게 실제로 효과가 있지?"라는 댓글에 대해 우리는 이것을 분열시킬 수 있다.첫째,..

programing 2022.05.11

강박 대 강박.

강박 대 강박. 난 그걸 읽었다.strcpy문자열을 복사하기 위한 것이며strdup새 문자열로 포인터를 반환하여 문자열을 복제하십시오. 어떤 케이스를 사용하고 싶으신지 설명해 주시겠습니까?strcpy어떤 경우를 사용하시겠습니까?strdup?strcpy(ptr2, ptr1)와 같다while(*ptr2++ = *ptr1++) 질질 끄는 것과 같은 경우 ptr2 = malloc(strlen(ptr1)+1); strcpy(ptr2,ptr1); (memcpy 버전이 더 효율적일 수 있음 따라서 복사한 문자열이 힙 섹션에서 생성되므로 다른 함수에 사용되도록 하려면 strupping을 사용하면 된다.기능strcpy그리고strncpyC 표준 라이브러리의 일부로서 기존 메모리에서 작동한다.즉, 함수가 문자열 데이터를 복..

programing 2022.05.11

왜 C연합이 필요한가?

왜 C연합이 필요한가? 언제 조합을 사용해야 하는가?왜 우리는 그것들이 필요한가?조합은 종종 정수와 부유물의 이항 표현 사이에서 전환하는데 사용된다. union { int i; float f; } u; // Convert floating-point bits to integer: u.f = 3.14159f; printf("As integer: %08x\n", u.i); 비록 이것은 기술적으로 C 표준에 따라 정의되지 않은 행동이지만(가장 최근에 작성된 필드만 읽도록 되어 있다), 사실상 어떤 컴파일러에서도 잘 정의된 방식으로 행동할 것이다. 또한 조합은 C에서 의사-폴리모르프리즘을 구현하기 위해 사용되기도 하는데, 구조물에 어떤 종류의 사물을 포함하고 있는지를 나타내는 태그를 부여한 다음 가능한 유형을 함..

programing 2022.05.10

C에서 NULL 포인터를 해제하는 것이 좋은 관행인가?

C에서 NULL 포인터를 해제하는 것이 좋은 관행인가? 이 질문에는 이미 다음과 같은 해답이 있다. 닫힌10년 전. 중복 가능: ptr이 NULL 손상된 메모리인 경우 free(ptr)가 있는가? 만약 포인터라면 자유롭게 해 주는 C 함수를 쓰고 있다.malloc()가 아무 ED와 될 수 . 포인터는 NULL이거나 (오류가 발생하여 코드가 아무 것도 할당할 기회를 얻지 못한 경우) 로 할당될 수 있다.malloc()한가?사용해도 안전한가?free(ptr);대신에if (ptr != NULL) free(ptr);? gcc와도 전혀 불평하지 않다.-Wall -Wextra -ansi -pedantic그러나 그것은 좋은 연습인가?ISO-IEC 9899의 7.20.3.2/2 C 표준 인용: void free(voi..

programing 2022.05.10

iOS 앱을 순수하게 C로 작성하는 방법

iOS 앱을 순수하게 C로 작성하는 방법 목표보다 C를 먼저 배우라고? 보통 나는 일부 Obj-C 코드를 순수한 C 코드로 교체한다(결국 원하는 만큼 혼합할 수 있고, Obj-C 방법의 내용은 전적으로 순수한 C 코드일 수 있다). 이게 사실이야? 순수하게 C프로그래밍 언어로 아이폰 앱을 만들 수 있을까?젠장, 시간이 좀 걸렸지만 알아냈어 main.c: #include #include #include // This is a hack. Because we are writing in C, we cannot out and include // , as that uses Objective-C constructs. // however, neither can we give the full function declar..

programing 2022.05.10

메모리 할당이 시스템 호출인가?

메모리 할당이 시스템 호출인가? 메모리 할당이 시스템 호출인가?예를 들어,malloc그리고new 다른 프로세스에서 공유하고 OS에서 관리하는 힙입니다.개인용 더미는?힙의 메모리 할당이 OS에 의해 관리되는 경우, 이것은 얼마나 비싼가? 나는 또한 이 주제에 대해 더 많이 읽을 수 있는 장소들에 대한 링크도 갖고 싶다.대체적으로.malloc그리고new호출할 때마다 시스템 호출을 수행하지 마십시오.그러나, 그들은 큰 페이지의 메모리를 할당하기 위해 하위 수준의 메커니즘을 사용한다.윈도에서는 하위 메커니즘이 있다. 나는 POSIX 시스템에서는, 이것은 어느 정도 동등하다고 믿는다. 이 두 가지 모두 OS 레벨에서 프로세스에 메모리를 할당하기 위한 시스템 호출을 수행한다.후속 배분은 시스템 호출 없이 큰 페이지..

programing 2022.05.10

왜 +++++B가 작동하지 않는가?

왜 +++++B가 작동하지 않는가? int main () { int a = 5,b = 2; printf("%d",a+++++b); return 0; } 이 코드는 다음과 같은 오류를 제공한다. 오류: 증분 피연산자에 필요한 l값 하지만 만약 내가 모든 곳에 공간을 둔다면a++ +그리고++b그럼 잘 될 거야 int main () { int a = 5,b = 2; printf("%d",a++ + ++b); return 0; } 첫 번째 예에서 오류가 의미하는 것은?printf("%d",a+++++b);로 해석되다(a++)++ + b막시말 뭉크 규칙에! 따라 ++는 (postfix) 가(postfix)에 평가되지 않는다.lvalue하지만 피연산자가 될 필요가 있다.lvalue. ! 6.4/4는 다음 사전 처리..

programing 2022.05.09

C에서 사전을 구현하는 빠른 방법

C에서 사전을 구현하는 빠른 방법 C에서 프로그램을 쓰면서 내가 그리워하는 것 중 하나는 사전 데이터 구조다.C에서 구현하는 가장 편리한 방법은 무엇인가?나는 성능을 찾는 것이 아니라 처음부터 코딩하기 쉬운 것을 찾고 있다.나도 일반적이지 않았으면 좋겠어. 뭐랄까.char*→int할 이다. 나는 할 수 하지만 나는 그것이 임의의 수의 항목을 저장할 수 있기를 원한다. 이것은 연습으로 더 의도된 것이다.이용 가능한 제3자 도서관이 있다는 것을 알고 있다.하지만 그들이 존재하지 않는다는 것을 잠시 생각해 보라.이런 상황에서 위의 요구 사항을 충족하는 사전을 가장 빨리 구현할 수 있는 방법은 무엇인가?C 프로그래밍 언어의 6.6절은 간단한 사전(해시테이블) 데이터 구조를 제시한다.나는 유용한 사전 구현이 이것..

programing 2022.05.09
반응형