C 113

C/C++에서 메모리 부족 상황에 적절하게 대처하는 방법은 무엇입니까?

C/C++에서 메모리 부족 상황에 적절하게 대처하는 방법은 무엇입니까? 대용량 메모리를 사용하는 캐싱 앱을 쓰고 있습니다. 메모리 관리를 잘 할 수 있으면 좋겠지만, 메모리가 부족하면 어떻게 해야 할지 생각 중입니다. 단순한 오브젝트라도 할당하는 콜이 실패하면 syslog 콜도 실패할 가능성이 있습니까? 편집: 좋아요, 질문을 명확히 해야 할 것 같아요.malloc 또는 new가 NULL 또는 0L 값을 반환하는 경우 기본적으로 콜이 실패했음을 의미하며 어떤 이유로 메모리를 제공할 수 없습니다.그렇다면, 이 경우 어떻게 해야 할까요? EDIT2: "new"에 대한 호출이 예외를 발생시킬 수 있다는 것을 방금 깨달았습니다.이것은 더 높은 수준에서 잡힐 수 있기 때문에 나는 아마도 우아하게 더 위로 나갈 수..

programing 2022.09.24

부동 소수점 숫자의 기호, 가수 및 지수를 얻는 방법

부동 소수점 숫자의 기호, 가수 및 지수를 얻는 방법 2개의 프로세서에서 실행되고 있는 프로그램이 있는데, 그 중 하나는 부동소수점을 지원하지 않습니다.따라서 프로세서의 고정점을 사용하여 부동소수점 계산을 수행해야 합니다.이를 위해 부동소수점 에뮬레이션 라이브러리를 사용합니다. 부동소수점을 지원하는 프로세서의 부동소수점 숫자 기호, 맨티사 및 지수를 먼저 추출해야 합니다.그래서 제 질문은 어떻게 단일 정밀 부동 소수점 숫자의 부호, 가수, 지수를 얻을 수 있는가입니다. 이 그림의 형식에 따라 그게 내가 지금까지 해온 일이지만, 부호만 빼면, 가수와 지수 둘 다 맞지 않아요.뭔가 빠진 것 같아 void getSME( int& s, int& m, int& e, float number ) { unsigned ..

programing 2022.08.28

fread는 실제로 어떻게 작동합니까?

fread는 실제로 어떻게 작동합니까? 의 fread size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream); 는, 하는 이러한 콜은, 「이러다」입니다.fread: char a[1000]; fread(a, 1, 1000, stdin); fread(a, 1000, 1, stdin); ★★★★★★★라고 써있나요?1000한 번에 바이트를 표시합니까?퍼포먼스에 차이가 있을 수도 있고 없을 수도 있습니다.의미론에는 차이가 있다. fread(a, 1, 1000, stdin); 는 각각 길이가 1바이트인 1000개의 데이터 요소를 읽으려고 합니다. fread(a, 1000, 1, stdin); 는 1000바이트 길이의 1개의 데이터 요소를 읽으려고 합니다...

programing 2022.08.25

C의 롤링 중위수 알고리즘

C의 롤링 중위수 알고리즘 현재 C에서 롤링 중위 필터(롤링 평균 필터와 유사)를 구현하기 위한 알고리즘을 개발 중입니다.내가 문헌을 찾아본 결과, 그것을 할 수 있는 두 가지 상당히 효율적인 방법이 있는 것 같다.첫 번째 방법은 값의 초기 창을 정렬한 다음 이진 검색을 수행하여 새 값을 삽입하고 각 반복에서 기존 값을 제거하는 것입니다. 두 번째(Hardle and Steiger, 1995, JRSS-C, Algorithm 296)는 한쪽 끝에는 최대 히프가, 다른 한쪽 끝에는 최소 히프가, 중앙에는 중앙이 있는 이중 엔드 힙 구조를 구축합니다.그러면 O(n log n)가 아닌 선형 시간 알고리즘이 생성됩니다. 여기 문제가 있습니다.전자의 실장은 가능하지만, 수백만 번의 시계열로 실행할 필요가 있기 때..

programing 2022.08.25

어레이 이름이 포인터입니까?

어레이 이름이 포인터입니까? 어레이 이름이 C의 포인터입니까?그렇지 않은 경우 어레이 이름과 포인터 변수의 차이점은 무엇입니까?배열은 배열이고 포인터는 포인터이지만 대부분의 경우 배열 이름은 포인터로 변환됩니다.자주 사용되는 용어는 포인터로 쇠퇴한다는 것입니다. 어레이는 다음과 같습니다. int a[7]; a에는 7개의 정수를 위한 공간이 포함되어 있으며 이들 중 하나에 다음과 같이 할당과 함께 값을 입력할 수 있습니다. a[3] = 9; 다음은 포인터입니다. int *p; p에는 정수의 공백이 포함되어 있지 않지만 정수의 공백을 가리킬 수 있습니다.의 한 수 .a「 」 「 」 、 「 。 p = &a[0]; 혼란스러울 수 있는 것은, 다음과 같은 것도 쓸 수 있다는 것입니다. p = a; 어레이의 내용은..

programing 2022.08.24

C void 인수 "void foo(void)"를 사용하는 것이 좋습니까, 아니면 "void foo()"를 사용하지 않는 것이 좋습니까?

C void 인수 "void foo(void)"를 사용하는 것이 좋습니까, 아니면 "void foo()"를 사용하지 않는 것이 좋습니까? 이 질문에는 이미 답변이 있습니다. C++ 또는 C에서 foo(void)와 foo() 사이에 차이가 있습니까? (4개의 답변) C99의 func()와 func(void)의 비교 (4개의 답변) 닫힘4년 전에요. 것이 더 좋은가:void foo() ★★★★★★★★★★★★★★★★★」void foo(void)보이드가 있으면 보기 흉하고 일관성이 없어 보이지만 좋다고 들었습니다.★★★★★★★★★★★★★★★★★★? 것이 있는 것도 는, 과 같습니다.void foo()윌? 윌foo(bar);받들????void foo(void); 이는 C에서 "파라미터 없음"을 나타내는 올바른 방..

programing 2022.08.21

C용 XML 파서

C용 XML 파서 현재 이 질문은 Q&A 형식에 적합하지 않습니다.우리는 답변이 사실, 참고 자료 또는 전문지식에 의해 뒷받침되기를 기대하지만, 이 질문은 토론, 논쟁, 여론 조사 또는 연장된 토론을 요구할 것이다.이 질문이 개선되고 다시 열릴 수 있다고 생각되면헬프센터를 방문하여 안내를 받으십시오. 닫힘9년 전. C에 가장 적합한 XML 파서를 제안해 주시겠습니까?expat과 libxml2의 2가지 예를 나타냅니다.두 번째는 IMHO입니다.메모리에 트리를 만들기 때문에 조작하기 쉬운 데이터 구조를 만들 수 있기 때문입니다.한편, expat 에서는, 아무것도 빌드 되지 않습니다(스스로 작성하지 않으면 안 됩니다).파싱 중에 특정 이벤트에서 핸들러를 호출할 수 있을 뿐입니다.하지만 (저는 측정하지 않았습니..

programing 2022.08.21

char *envp [ ]는 main() portable의 세 번째 인수입니까?

char *envp [ ]는 main() portable의 세 번째 인수입니까? 환경변수를 가져오려면C프로그램, 다음을 사용할 수 있습니다. getenv() extern char **environ; 그러나 위에서 언급한 것 외에, 는char *envp[]에 대한 제3의 논거로서main()환경변수를 표준의 일부로 간주할 수 있습니까? #include int main(int argc, char *argv[], char *envp[]) { while(*envp) printf("%s\n",*envp++); } 이char *envp[]휴대할 수 있습니까?함수getenvC 표준으로 지정되어 있는 것은 이것뿐입니다.함수 및 extern은 POSIX 고유합니다. 편집 그main파라미터envp는 POSIX에 의해 지정되..

programing 2022.08.21

"strlen(s1) - strlen(s2)"은 0보다 작으면 안 됩니다.

"strlen(s1) - strlen(s2)"은 0보다 작으면 안 됩니다. 저는 현재 문자열 길이를 자주 비교해야 하는 C 프로그램을 작성하고 있기 때문에 다음과 같은 도우미 기능을 작성했습니다. int strlonger(char *s1, char *s2) { return strlen(s1) - strlen(s2) > 0; } 는 '참'이 '참'이 돌아온다는 되었습니다.s1가 s2누가 이 이상한 행동에 대해 설명해 줄 수 있나요?서명된 수량과 서명되지 않은 수량을 모두 포함하는 식을 처리할 때 C에서 발생하는 특이한 동작입니다. 한쪽 오퍼랜드가 서명되고 다른 한쪽 오퍼랜드가 서명되지 않은 조작이 실행되면 C는 암묵적으로 서명된 인수를 부호 없는 인수(unsigned)로 변환하고 숫자가 음이 아닌 것으로 ..

programing 2022.08.19

C/C++ 어플리케이션용 오픈소스 PDF 라이브러리

C/C++ 어플리케이션용 오픈소스 PDF 라이브러리 마감되었습니다. 이 질문은 충족되지 않습니다.스택 오버플로우 가이드라인현재 답변을 받고 있지 않습니다. 이 질문을 개선하시겠습니까?스택 오버플로의 토픽이 되도록 질문을 업데이트합니다. 8년 전에 문을 닫았어요 이 질문을 개선하다 (네이티브) C++ Windows 어플리케이션에서 PDF 출력을 생성할 수 있으면 좋겠습니다.이를 위해 사용할 수 있는 무료/오픈 소스 라이브러리가 있습니까? 이 질문에 대한 답을 살펴봤지만 대부분 와 관련이 있습니다.그물.리바루 Haru는 ANSI-C로 작성된 PDF를 생성하기 위한 무료 크로스 플랫폼 오픈 소스 소프트웨어 라이브러리입니다.스태틱 라이브러리(.a, .lib)와 공유 라이브러리(.so, .dll)로 모두 사용할 ..

programing 2022.08.19