C 언어에서 빠른 해시 테이블 및 동적 배열

2025-01-22

이 글에서는 C++의 `std::unordered_map`과 `std::vector`에 해당하는 것을 C 언어로 빠르게 구현하는 방법을 보여줍니다. 사용자 정의 할당자, 개수가 있는 문자열, 효율적인 해시 함수를 만들어 플랫 해시 테이블과 계층적 해시 테이블, 그리고 동적 배열 구현을 소개합니다. 문자열 연결, 환경 변수 조작, 해시 테이블 보안 강화(Address Space Layout Randomization(ASLR)을 사용한 충돌 저항성 향상)에 대한 설명도 포함되어 있습니다.

더 보기

일반적인 확장 인라인 어셈블리 실수를 피하기 위한 규칙

2024-12-21

이 글은 인라인 어셈블리 튜토리얼이 아니라 일반적인 실수를 피하기 위한 6가지 규칙의 요약입니다. 저자는 인라인 어셈블리가 위험하며 가능하면 피해야 한다고 강조합니다. 최신 컴파일러는 대부분의 사용 사례에 대해 내장 함수를 제공합니다. 불가피한 경우 다음 규칙을 따르십시오. `volatile` 한정자를 사용하십시오. 메모리에 액세스하는 경우 `memory` 클로버를 사용하십시오. 입력 제약 조건을 변경하지 마십시오. 인라인 어셈블리에서 함수를 호출하지 마십시오. 절대 어셈블리 레이블을 정의하지 마십시오. 어셈블러의 로컬 레이블 기능을 사용하여 레이블 충돌을 방지하십시오. 이 글에서는 온라인 튜토리얼이나 LLM 생성 코드를 검토하여 이러한 규칙을 실천할 것을 권장합니다.

더 보기