C 38

C,C++의 메모리 누수, 무료, 삭제를 잊었습니다.

C,C++의 메모리 누수, 무료, 삭제를 잊었습니다. 우리는 malloc을 사용하여 C에 메모리를 할당하고 new를 사용하여 C++에 메모리를 할당합니다.할당된 메모리는 C에서 무료로 사용하거나 C++에서 삭제하여 OS로 돌려주어야 한다는 것을 알고 있습니다.메모리 할당 후 free/delete를 사용하는 것을 잊었다면 메모리 누수가 발생한다는 뜻입니다. 이제, 제 질문은 이 메모리 누수가 프로그램 실행 기간 동안에만 발생하는 것인지 아니면 영구적인 누수/손실이 발생하는 것인지 아니면 시스템을 다시 시작한 후에 다시 발생하는 것인지 여부입니다.실제로 내부 프로세스는 무엇입니까?메모리 누수/손실이 정확히 무엇을 의미합니까? 누군가 이것에 대해 자세히 설명해 주시거나 좋은 추천서를 주시면 감사하겠습니다. 업..

source 2023.06.09

gcc용 코드 생성기 백엔드를 어떻게 작성합니까?

gcc용 코드 생성기 백엔드를 어떻게 작성합니까? 저는 저만의 (매우 간단한) 바이트 코드 언어와 이를 실행할 가상 머신을 만들었습니다.잘 작동하지만 이제 gcc(또는 자유롭게 사용할 수 있는 다른 컴파일러)를 사용하여 일반 c 프로그램에서 이 기계에 대한 바이트 코드를 생성하고 싶습니다.그래서 문제는 어떻게 gcc를 수정하거나 확장하여 그것이 나만의 바이트 코드를 출력할 수 있는가 하는 것입니다.참고로 저는 제 바이트 코드를 기계 코드로 컴파일하고 싶지 않습니다. 저는 c-코드를 (나만의) 바이트 코드로 "컴파일"하고 싶습니다. 저는 이것이 잠재적으로 큰 질문이라는 것을 알고 있으며, 가장 좋은 대답은 "gcc 소스 코드를 보러 가라"는 것일 수 있습니다.이 일을 시작하는 방법에 대한 도움이 필요합니다..

source 2023.06.09

포인터로 붕괴되는 어레이에 대한 예외?

포인터로 붕괴되는 어레이에 대한 예외? 많은 투고에서 "대부분의 경우 어레이 이름이 포인터로 붕괴된다"는 글을 보았습니다. 어떤 경우에 어레이 이름이 첫 번째 요소에 대한 포인터로 소멸되지 않는지 알 수 있습니까?그럼요. C99에는 기본적으로 다음 세 가지 사례가 있습니다. 의 의론이라면&(address-of) 연산자. 의 의론이라면sizeof교환입니다. 스트링 리터럴 타입의 경우char [N + 1]또는 활자의 넓은 문자열 리터럴wchar_t [N + 1](N는 문자열의 길이)로, 다음과 같이 배열을 초기화하기 위해 사용됩니다.char str[] = "foo";또는wchar_t wstr[] = L"foo";. 게다가 C11에서는, 새롭게 도입된alignof연산자는 배열 인수가 포인터로 붕괴되지 않도록 ..

source 2023.01.27

C와 C++의 산술 연산 전에 단락을 int로 변환해야 하는 이유는 무엇입니까?

C와 C++의 산술 연산 전에 단락을 int로 변환해야 하는 이유는 무엇입니까? 이 질문에서 얻은 답변에 따르면 C++는 이 변환 요건을 계승한 것으로 보입니다.shortintC에서 산술 연산을 수행할 때.애초에 왜 이것이 C에 도입되었는지 당신의 머리를 긁어봐도 될까요?이러한 작업을 그냥 다음과 같이 수행하는 것은 어떨까요?short 예를 들어 (댓글에 있는 dyp의 제안에서 인용): short s = 1, t = 2 ; auto x = s + t ; xint 타입이 됩니다.섹션의 국제표준(프로그래밍 언어)의 이론적 근거를 살펴보면,6.3.1.8 통상적인 산술 변환에는 다음과 같이 적혀 있습니다(내 것은 앞으로 강조). 이러한 전환에 대한 이 기준서의 규칙은 K&R의 규정을 약간 수정한 것이다.명시적 ..

source 2023.01.17

TR 24731 '안전' 기능을 사용합니까?

TR 24731 '안전' 기능을 사용합니까? 닫혔어. 이 질문은 좀 더 자세히 설명해야 합니다.초점을 맞춥니다.현재 답변을 받고 있지 않습니다. 이 질문을 개선하시겠습니까?이 게시물을 편집하여 하나의 문제에 초점을 맞추도록 질문을 업데이트하십시오. 2년 전에 문을 닫았어요 이 질문을 개선하다 ISO C 위원회(ISO/IEC JTC1/SC21/WG14)는 TR 24731-1을 발표하고 TR 24731-2에 대해 작업 중입니다. TR 24731-1: C 라이브러리 확장 파트 I: 경계 확인 인터페이스 WG14는 보다 안전한 C 라이브러리 기능에 관한 TR 작업을 하고 있습니다.이 TR은 기존 프로그램을 수정하는 것을 목적으로 하며, 종종 버퍼 길이로 추가 매개변수를 추가합니다.최신 초안은 문서 N1225에 ..

source 2023.01.17

포인터 투 포인트 슛은 C에서 어떻게 작동합니까? (그리고 언제 사용할 수 있습니까?)

포인터 투 포인트 슛은 C에서 어떻게 작동합니까? (그리고 언제 사용할 수 있습니까?) 포인터 투 포인트 슛은 C에서 어떻게 작동합니까? 제제사 용용 ??? ???8비트 주소(따라서 메모리 256바이트)를 가진 8비트 컴퓨터를 가정해 보겠습니다.이것은 그 메모리의 일부입니다(상단의 숫자는 주소입니다). 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+ | | 58 | | | 63 | | 55 | | | h | e | l | l | o | \0 | | +----+----+----+----+----+----+----+----+-..

source 2022.11.05

다른 라이브러리 없이 순수 c/c++로 BMP 이미지 쓰기

다른 라이브러리 없이 순수 c/c++로 BMP 이미지 쓰기 알고리즘에서는 정보 출력을 생성해야 합니다.부울 매트릭스를 bmp 파일에 써야 합니다.이러한 요소의 매트릭스가 참일 경우 픽셀이 흰색인 모노크로믹 이미지여야 합니다.주요 문제는 bmp 헤더와 쓰기 방법입니다.Clean C 코드 for 비트맵(BMP) 이미지 생성 이 코드는 stdio.h 이외의 라이브러리를 사용하지 않습니다.따라서 C++, C#, Java 등 C 패밀리의 다른 언어로 쉽게 통합할 수 있습니다. #include const int BYTES_PER_PIXEL = 3; /// red, green, & blue const int FILE_HEADER_SIZE = 14; const int INFO_HEADER_SIZE = 40; void ..

source 2022.11.04

double in printf의 올바른 형식 지정자

double in printf의 올바른 형식 지정자 올바른 형식 지정자는 무엇입니까?doubleprintf로요?그런가요?%f아니면?%lf내 생각엔%f잘 모르겠어요. 코드샘플 #include int main() { double d = 1.4; printf("%lf", d); // Is this wrong? } "%f"는 (또는 적어도1개의) 더블의 올바른 형식입니다.의 형식은 없습니다.float, 왜냐하면 당신이 통과를 시도했을 때float로.printf로 승격됩니다.double전에printf수신합니다1. "%lf"또한 현행 표준 하에서도 허용됩니다.l그 뒤에 있는 경우 효과가 없는 것으로 지정됩니다.f변환 지정자(특히). 이 장소에서는,printf형식 문자열은 와 크게 다르다scanf(그리고fscanf,..

source 2022.11.03