반응형

C 117

타입 세이프한 범용 데이터 구조 C?

타입 세이프한 범용 데이터 구조 C? 나는 "일반적인 오래된 C" 프로그래밍보다 훨씬 더 많은 C++ 프로그래밍을 했다.플레인 C에서 프로그래밍할 때 가장 놓치는 것은 템플릿을 통해 C++에서 제공되는 타입 세이프 범용 데이터 구조입니다. 구체성을 위해 일반적인 단일 링크 리스트를 검토합니다.C++ 에서는, 독자적인 템플릿클래스를 정의하고 나서, 필요한 타입에 맞추어 인스턴스화하는 것이 간단합니다. C에서는 일반적인 단일 링크 리스트를 구현하는 몇 가지 방법을 생각할 수 있습니다. void 포인터를 사용하여 링크된 목록 유형 및 지원 절차를 한 번 작성합니다. 데이터 구조 및 지원 프로시저의 유형별 버전을 생성하기 위해 필요한 유형 이름 등을 사용하는 프리프로세서 매크로를 작성합니다. 보다 정교한 독립 ..

sourcecode 2022.09.03

Linux에서의 낮은 memcpy 퍼포먼스

Linux에서의 낮은 memcpy 퍼포먼스 최근 새로운 서버를 구입하여 memcpy 퍼포먼스가 저하되고 있습니다.서버의 memcpy 퍼포먼스는 당사의 노트북에 비해 3배 느립니다. 서버 사양 섀시 및 Mobo: SUPER MICRO 1027GR-TRF CPU: 인텔 Xeon E5-2680 (2.70 GHz)x 2 메모리: 16GB DDR3 1600MHz x 8 편집: 조금 더 높은 사양의 다른 서버에서도 테스트하고 있으며, 위의 서버와 같은 결과를 보고 있습니다. 서버 2의 사양 섀시 및 Mobo: SUPER MICRO 10227GR-TRFT CPU: 인텔 Xeon E5-2650 v2 (2.6 Ghz)x 2 메모리: 16GB DDR3 1866MHz x 8 노트북 사양 섀시:Lenovo W530 CPU: ..

sourcecode 2022.08.31

함수에서 char*를 반환하는 것과 char[]를 반환하는 것의 차이점은 무엇입니까?

함수에서 char*를 반환하는 것과 char[]를 반환하는 것의 차이점은 무엇입니까? 이 질문에는 이미 답변이 있습니다. 포인터를 사용하여 다른 함수에서 로컬 변수에 액세스하는 방법 (10개의 답변) 문자열 리터럴:그들은 어디로 갑니까? (8개의 답변) chars [ ]와 char *의 차이점은 무엇입니까? (14개 답변) 닫힘4년 전에요. 첫 번째 함수는 "Hello, World" 문자열을 반환하고 두 번째 함수는 아무것도 반환하지 않는 이유는 무엇입니까?두 함수의 반환값은 범위 밖의 데이터를 반환하기 때문에 정의되지 않을 것으로 생각했습니다. #include // This successfully returns "Hello, World" char* function1() { char* string = "..

sourcecode 2022.08.31

플레인 파일을 실행 파일에 링크할 수 있습니까?

플레인 파일을 실행 파일에 링크할 수 있습니까? 이 질문에는 이미 답변이 있습니다. GCC를 사용한 C/C++: 자원 파일을 실행 파일/라이브러리에 정적으로 추가 (7개의 답변) 닫힘6년 전에요. 일부 프레임워크(Qt, Windows, Gtk...)는 바이너리에 리소스를 추가하는 기능을 제공합니다.정말 필요한 것은 이것뿐이기 때문에 프레임워크 없이 이것을 달성할 수 있을까? 이진(데이터 세그먼트) 내에 리소스 주소를 포함하는 기호 자원의 길이를 나타내는 기호 자원 자체 gcc 툴체인을 사용하여 이를 실현하려면 어떻게 해야 합니까?다음과 같이 할 수 있습니다. objcopy --input binary \ --output elf32-i386 \ --binary-architecture i386 my_file...

sourcecode 2022.08.31

Linux에서 C에 디렉토리를 반복적으로 나열하는 방법

Linux에서 C에 디렉토리를 반복적으로 나열하는 방법 C 프로그래밍에 있는 모든 디렉토리와 파일을 반복적으로 나열해야 합니다.FTW에 대해 알아보고 있습니다만, 사용하고 있는 2개의 operating system(Fedora와 Minix)에는 포함되어 있지 않습니다.지난 몇 시간 동안 읽었던 여러 가지 책들 때문에 머리가 아프기 시작했어요. 코드 스니펫을 아시는 분이 계시면 정말 좋을 것 같습니다.아니면 누군가 좋은 지시를 해주시면 감사하겠습니다. 왜 다들 계속해서 바퀴를 재창조해야 한다고 주장하는 거죠? POSIX.1-2008은 이 기능을 표준화하였습니다.이 기능은 Single Unix Specification v4(SuSv4)에도 정의되어 있으며 Linux(glibc,), OS X 및 최신 BSD ..

sourcecode 2022.08.31

포인터 캐스팅 시 얼라인먼트에 대해 걱정해야 합니까?

포인터 캐스팅 시 얼라인먼트에 대해 걱정해야 합니까? 제 프로젝트에는 다음과 같은 코드가 있습니다. // raw data consists of 4 ints unsigned char data[16]; int i1, i2, i3, i4; i1 = *((int*)data); i2 = *((int*)(data + 4)); i3 = *((int*)(data + 8)); i4 = *((int*)(data + 12)); 에게 이 ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★unsigned char* a까지int*일반적으로 정렬 요건이 더 엄격합니다.하지만 테크니컬 리더에 따르면 대부분의 ..

sourcecode 2022.08.30

어레이의 주소가 C의 값과 같은 이유는 무엇입니까?

어레이의 주소가 C의 값과 같은 이유는 무엇입니까? 다음 코드 비트에서는 포인터 값과 포인터 주소가 예상대로 다릅니다. 그러나 어레이의 값과 주소는 그렇지 않습니다. 어떻게 이럴 수 있죠? 산출량 my_array = 0022FF00 &my_array = 0022FF00 pointer_to_array = 0022FF00 &pointer_to_array = 0022FEFC #include int main() { char my_array[100] = "some cool string"; printf("my_array = %p\n", my_array); printf("&my_array = %p\n", &my_array); char *pointer_to_array = my_array; printf("pointer_..

sourcecode 2022.08.30

##(더블 해시)는 프리프로세서 디렉티브에서 무엇을 합니까?

##(더블 해시)는 프리프로세서 디렉티브에서 무엇을 합니까? #define DEFINE_STAT(Stat) \ struct FThreadSafeStaticStat StatPtr_##Stat; 위의 행은 Unreal 4에서 따온 것으로, 비현실적인 포럼에서 다시 질문할 수 있다는 것을 알고 있습니다만, 여기서 질문할 필요가 있는 일반적인 C++ 질문이라고 생각합니다. 첫 번째 줄에 매크로가 정의되어 있는 것은 알고 있습니다만, 저는 C++의 프리프로세서 셰나니건에 익숙하지 않기 때문에, 그 점에 대해서는 잘 모르겠습니다.논리적으로 백슬래시는 선언이 다음 행으로 계속된다는 것을 의미합니다. FThread Safe Stat Stat은 템플릿과 비슷하지만 #가 사용되고 있으며 C++에서는 지금까지 본 적이 없는..

sourcecode 2022.08.30

PTHREAD_MUTEX_INITIALIZER vs pthread_mutex_init (&mutex, param)

PTHREAD_MUTEX_INITIALIZER vs pthread_mutex_init (&mutex, param) 와 어떤 차이가 있습니까? pthread_mutex_t lock = PTHREAD_MUTEX_INITIALIZER; 또는 pthread_mutex_t lock; pthread_mutex_init ( &lock, NULL); 첫 번째 방법만 사용해도 안전합니까? 메모: 질문은 주로 매우 작은 프로그램에 관한 것입니다.여러 클라이언트를 서버에 접속하여 워커 스레드로 그 문의사항을 해결합니다.이전 버전의 POSIX 표준에서는 이니셜라이저를 사용한 첫 번째 메서드는 스태틱하게 할당된 변수에서만 동작할 수 있습니다.변수가 posix 규격의 경우,auto함수 본문에 정의되어 있는 변수.이것이 허용되지 ..

sourcecode 2022.08.30

실행 중인 프로세스를 나열하는 Linux API?

실행 중인 프로세스를 나열하는 Linux API? Linux 시스템에서 실행 중인 프로세스를 나열하고 각 프로세스가 열려 있는 파일을 나열할 수 있는 C/C++ API가 필요합니다. 저는 /proc/ 파일 시스템을 직접 읽고 싶지 않습니다. 이걸 할 방법을 생각해 낼 수 있는 사람?http://procps.sourceforge.net/ http://procps.cvs.sourceforge.net/viewvc/procps/procps/proc/readproc.c?view=markup PS 및 기타 프로세스 도구의 소스입니다.그들은 정말로 proc를 사용한다(그것이 아마도 전통적이고 최선의 방법임을 나타낸다).그들의 출처는 꽤 읽기 쉽다.파일 /procps-3.2.8/proc/readproc.c 유용할 수 ..

sourcecode 2022.08.30
반응형