반응형

C 6

포크와 실의 차이점은 무엇입니까?

포크와 실의 차이점은 무엇입니까? 누가 포크와 실의 차이를 설명할 수 있나요?포크는 동일한 코드 세그먼트를 가진 현재 프로세스의 복사본인 완전히 새로운 프로세스를 제공합니다.메모리 이미지가 변경되면(일반적으로 두 프로세스의 동작이 다르기 때문에), 메모리 이미지가 분리되지만(Copy On Write), 실행 가능한 코드는 그대로 유지됩니다.IPC(Inter Process Communication) 프리미티브를 사용하지 않는 한 태스크는 메모리를 공유하지 않습니다. 하나의 프로세스에는 여러 스레드가 있을 수 있으며 각 스레드는 프로세스의 동일한 컨텍스트 내에서 병렬로 실행됩니다.메모리 및 기타 리소스는 스레드 간에 공유되므로 데이터 손상을 방지하기 위해 일부 원시 및 동기화 개체(뮤텍스, 조건 변수 및 세..

programing 2022.07.02

일반적인 실장에서는 동적 메모리 할당이 C와 C++로 다른가요?

일반적인 실장에서는 동적 메모리 할당이 C와 C++로 다른가요? 한, 는 동적 메모리 하는 것은, 「 메모리 할당」이 「 메모리 할당은, 「동적 메모리 할당」을 하는 경우 뿐입니다.malloc()에서 가장 인 형식의 은 C++로 .::operator new()C스타일의 malloc도 C++로 제공되고 있어, 「아기 최초 할당」의 예도 코어 할당 기능으로 많이 사용되고 있습니다만, 현대의 컴파일러가 실제의 오퍼레이터를 어떻게 실장하고 있는지 궁금합니다. 그냥 얇은 포장지인가?malloc()아니면 일반적인 C++ 프로그램과 일반적인 C 프로그램의 메모리 할당 동작이 다르기 때문에 근본적으로 다르게 구현되는 것입니까? [편집: 주요 차이점은 보통 다음과 같습니다. C 프로그램은 더 적은 수의 할당, 더 큰 할..

programing 2022.07.02

"만약" 체인을 피하는 방법

"만약" 체인을 피하는 방법 다음과 같은 의사 코드가 있다고 가정합니다. bool conditionA = executeStepA(); if (conditionA){ bool conditionB = executeStepB(); if (conditionB){ bool conditionC = executeStepC(); if (conditionC){ ... } } } executeThisFunctionInAnyCase(); ★★★executeStepX이전 성공 시에만 실행해야 합니다.경우든, 「」는executeThisFunctionInAnyCase함수는 마지막에 호출해야 합니다. ( 긴 프로그래밍을 수 있는 요?기본적인 질문입니다.예를 들어 (C/C++에서) 그렇게 긴 시간을 피할 수 있는 방법이 있을까요?i..

programing 2022.07.02

정적 라이브러리의 내용

정적 라이브러리의 내용 정적 라이브러리가 있습니다.mystaticlib.a. 안에 있는 오브젝트 파일의 수 등 내용을 보고 싶습니다. 이거 gcc로 어떻게 해요?gcc에서 사용ar -t. -tgnu archiver(ar)의 옵션은 표준 출력에 아카이브 목차를 씁니다.파일 오퍼랜드에 의해 지정된 파일만 서면 목록에 포함해야 합니다.파일 오퍼랜드가 지정되지 않은 경우 아카이브 내의 모든 파일은 아카이브 순서에 포함되어야 합니다. 자세한 것은 이쪽.를 사용하면, 컨텐츠(.o 파일)와 정의된 기호를 표시할 수 있습니다.nmC++ 코드가 포함되어 있는 경우는,-C옵션에서 기호 이름을 디멘글링합니다. nm -C libschnoeck.a | less Mac에서는, 간단하게 nm libschnoeck.a | less ..

programing 2022.07.02

함수에서 C 문자열 반환

함수에서 C 문자열 반환 함수에서 C 문자열을 반환하려고 하는데 작동하지 않습니다.여기 제 코드가 있습니다. char myFunction() { return "My String"; } »main이렇게 부르고 있습니다. int main() { printf("%s", myFunction()); } 에도 몇 .myFunction동작하지 않습니다.예를 들어 다음과 같습니다. char myFunction() { char array[] = "my string"; return array; } 주의: 포인터는 사용할 수 없습니다! 이 문제에 대한 배경은 거의 없습니다. 몇 월인지 알아내는 기능이 있습니다.예를 들어 1이면 1월 등이 반환됩니다. 할 는 이렇게printf("Month: %s",calculateMonth(..

programing 2022.07.02

stdout/stderr 문자열로 리다이렉트

stdout/stderr 문자열로 리다이렉트 stdout/stderr를 파일로 리다이렉트하는 것에 대해서는 이전에도 많은 질문이 있었습니다.stdout/stderr를 문자열로 리다이렉트하는 방법이 있습니까?네, 리다이렉트 할 수 있습니다.std::stringstream: std::stringstream buffer; std::streambuf * old = std::cout.rdbuf(buffer.rdbuf()); std::cout 0) close(m_oldStdErr); if (m_pipe[READ] > 0) close(m_pipe[READ]); if (m_pipe[WRITE] > 0) close(m_pipe[WRITE]); } void BeginCapture() { if (!m_init) return..

programing 2022.07.02
반응형