반응형

C 40

gcc -g vs not -g 및 스트립 vs strip vs strip, 성능 및 메모리 사용량?

gcc -g vs not -g 및 스트립 vs strip vs strip, 성능 및 메모리 사용량? 바이너리 파일 크기가 문제가 되지 않는다면 성능이 중요한 환경에서 실행해야 하는 스트립 바이너리가 아니라 -g를 사용하는 단점이 있습니까?나는 디스크 공간이 많지만 바이너리는 cpu 집약적이고 메모리를 많이 사용합니다.바이너리는 한번 로드되고 몇 시간 동안 활성화됩니다. 편집: 디버깅 정보가 포함된 바이너리를 사용하고자 하는 이유는 세그먼트화 실패 시 유용한 코어 덤프를 생성하기 위해서입니다.ELF 로더는 섹션이 아닌 세그먼트를 로드합니다. 섹션에서 세그먼트로의 매핑은 실행 파일을 작성하는 데 사용되는 링커 스크립트에 의해 결정됩니다. 기본 링커 스크립트는 디버그 섹션을 세그먼트에 매핑하지 않으므로 생략합..

programing 2023.09.12

gdb: gdb를 종료하지 않고 프로그램을 종료합니다.

gdb: gdb를 종료하지 않고 프로그램을 종료합니다. 나는 gdb를 사용하여 프로그램을 디버깅하고 있습니다.퍼스트 Iload내 실행 파일, 그러면 나.continue프로그램을 실행할 수 있습니다.나는 가끔 내 프로그램의 실행을 방해하고 싶어, 그래서 나는 합니다.Ctrl + C. 제 문제는 이것이 제 프로그램과 gdb를 모두 닫는다는 것입니다.gdb를 종료하지 않고 프로그램을 종료하려면 어떻게 해야 합니까?사용해 보셨습니까?killGDB 내부에서?응용 프로그램을 중단하려면 ctrl-c를 사용합니다.그런 다음 GDB 프롬프트에서 "signal SIGINT"를 실행하면 이 신호가 응용 프로그램으로 전송되어 명령줄에서 ctrl-c를 실행할 때와 동일한 작업이 수행됩니다.Windows에서 사용해야 하는 것 같..

programing 2023.09.02

리눅스에서 C의 밀리초와 나노초의 정확도 차이를 어떻게 출력합니까?

리눅스에서 C의 밀리초와 나노초의 정확도 차이를 어떻게 출력합니까? 나는 두 개의 다른 인스턴스 사이의 시간 차이를 출력하는 이 프로그램을 가지고 있지만, 몇 초 안에 정확하게 출력됩니다.밀리초 단위로 출력하고 나노초 단위로 출력하고 싶습니다. //Prints in accuracy of seconds #include #include int main(void) { time_t now, later; double seconds; time(&now); sleep(2); time(&later); seconds = difftime(later, now); printf("%.f seconds difference", seconds); } 어떻게 하면 그것을 달성할 수 있을까요?시간(7) 맨 페이지를 먼저 읽습니다. 그런..

programing 2023.09.02

온도 변수나 산술 연산을 사용하지 않고 두 개의 숫자를 교환하는 방법은 무엇입니까?

온도 변수나 산술 연산을 사용하지 않고 두 개의 숫자를 교환하는 방법은 무엇입니까? 이 방정식은 임시 변수 없이 두 개의 숫자를 스왑하지만 산술 연산을 사용합니다. a = (a+b) - (b=a); 제가 어떻게 산수 연산 없이 그것을 할 수 있습니까?저는 XOR에 대해 생각하고 있었습니다.a=a+b; b=a-b; a=a-b; 이것은 간단하지만 효과적입니다.왜 std libs를 사용하지 않습니까? std::swap(a,b); C에서는 다음과 같이 작동합니다. a = a^b; b = a^b; a = a^b; 또는 더 멋진/괴상한 외모: a^=b; b^=a; a^=b; 자세한 내용은 XOR을 참조하십시오. XOR은 매우 강력한 작업으로, 많은 흥미로운 사용법을 여기저기서 볼 수 있습니다.임시 저장소나 산술 연..

programing 2023.08.13

이 오프셋 구현이 작동하는 이유는 무엇입니까?

이 오프셋 구현이 작동하는 이유는 무엇입니까? ANSIC에서 오프셋은 다음과 같이 정의됩니다. #define offsetof(st, m) \ ((size_t) ( (char *)&((st *)(0))->m - (char *)0 )) NULL 포인터를 다시 참조하고 있는데 분할 오류가 발생하지 않는 이유는 무엇입니까?아니면 이것은 일종의 컴파일러 해킹인가요? 오프셋의 주소만 빼내어 실제로 참조를 다시 하지 않고 정적으로 주소를 계산하는 것입니다.또한 이 코드는 휴대용입니까?위 코드의 어느 지점에서도 참조되지 않은 것은 없습니다.참조 해제는 다음과 같은 경우에 발생합니다.*또는->참조된 값을 찾기 위해 주소 값에 사용됩니다.의 *위는 주조를 목적으로 하는 형식 선언입니다. 그->연산자는 위에서 사용되지만 값..

programing 2023.08.08

"cdecl"은 무엇의 약자입니까?

"cdecl"은 무엇의 약자입니까? 네, 저는 "cdecl"이 저명한 호출 규약의 이름이라는 것을 알고 있기 때문에, 저에게 호출 규약에 대해 설명하지 마세요.제가 묻고 싶은 것은 "cdecl"의 약자(?)가 실제로 무엇을 의미하는지입니다.언뜻 보면 "C 선언자"(C의 다소 독특한 구문적 측면)를 연상시키기 때문에, 저는 그것이 좋지 않은 명명 선택이라고 생각합니다.사실, C 선언자를 해독하는 것이 유일한 목적인 cdecl이라는 프로그램이 있습니다.하지만 C 선언자 구문은 제가 아는 한 호출 규약과 전혀 관련이 없습니다. 단순화된 버전: "stdcall"은 "표준 통화 규약"을 나타냅니다."cdecl"은 무엇의 약자입니까?이것은 선언된 C 함수에서 비롯됩니다(K&RC에서 일반적이었던 선언되지 않은 C 함..

programing 2023.07.29

읽기 및 쓰기를 동시에 열기

읽기 및 쓰기를 동시에 열기 이 질문에는 이미 다음과 같은 답이 있습니다. popen()이 pipe() + fork()와 같은 양방향 파이프를 만들 수 있습니까? (6개 답변) 마감됨4년 전에. popen에서 반환된 파일 설명자를 읽고 쓸 수 있습니까?C를 통해 제어하고 싶은 대화형 프로세스가 있습니다.만약 포펜으로 이것이 불가능하다면, 그것을 피할 방법이 없을까요?이미 답변했듯이, popen은 한 방향으로 작동합니다.읽고 써야 하는 경우 파이프()로 파이프를 만들고 포크() 및 exec 함수로 새 프로세스를 확장한 다음 dup2()로 입력 및 출력을 리디렉션할 수 있습니다.어쨌든 나는 오픈보다 exec을 더 선호합니다. 왜냐하면 그것은 당신에게 프로세스를 더 잘 제어할 수 있기 때문입니다(예: 당신은 ..

programing 2023.07.24

16진수를 인쇄할 때 printf가 1바이트만 출력하지 않는 이유는 무엇입니까?

16진수를 인쇄할 때 printf가 1바이트만 출력하지 않는 이유는 무엇입니까? pixel_data이다.vector의char. 내가 할 때printf(" 0x%1x ", pixel_data[0] )만나 뵙기를0xf5. 하지만 나는 이해합니다.0xfffffff5마치 1바이트가 아닌 4바이트 정수를 출력하는 것처럼. 왜 이러한가?준 적이 있습니다printf a char출력하려면 - 1바이트밖에 안 되는데, 왜 그럴까요?printf인쇄 4? NB. 그printf구현은 타사 API 내에서 마무리되지만 이것이 표준의 기능인지 궁금할 뿐입니다.printf?당신은 아마도 정의되지 않은 행동의 양성 형태를 얻고 있을 것입니다. 왜냐하면%x수식어는 다음을 기대합니다.unsigned int매개 변수 및 achar일반적으로..

programing 2023.07.19

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

sig_atomic_t는 실제로 어떻게 작동합니까? 컴파일러나 OS는 sig_atomic_t형과 normal int형 변수를 어떻게 구별하고 연산이 atomic이 되도록 보장합니까?둘 다 사용하는 프로그램은 어셈블리 코드가 동일합니다.작업을 원자력으로 만들기 위해 추가적인 주의가 필요합니까?sig_atomic_t원자성 데이터 형식이 아닙니다.신호 처리기의 컨텍스트에서 사용할 수 있는 데이터 유형입니다.그래서 그 이름을 "신호 처리와 관련된 원자"로 읽는 것이 좋습니다. 신호 처리기와의 통신을 보장하려면 원자 데이터 유형의 속성 중 하나, 즉 읽기 및 업데이트가 항상 일관된 값을 보인다는 사실만 필요합니다.기타 데이터 유형(예: 아마도)long long는 아래위 부분에 몇 가지 지침으로 될 수 를 들어 )..

programing 2023.07.14

sscanf가 있는 공백이 있는 문자열 읽기

sscanf가 있는 공백이 있는 문자열 읽기 프로젝트를 위해 저는 문자열에서 int와 string을 읽으려고 합니다.유일한 문제는sscanf()읽는 것을 방해하는 것처럼 보입니다.%s그것이 공간을 볼 때.이 한계를 극복할 방법이 있습니까?다음은 제가 하려는 일의 예입니다. #include #include int main(int argc, char** argv) { int age; char* buffer; buffer = malloc(200 * sizeof(char)); sscanf("19 cool kid", "%d %s", &age, buffer); printf("%s is %d years old\n", buffer, age); return 0; } 인쇄 대상:cool is 19 years old내가 필..

programing 2023.07.14
반응형