C에서 메모리 재할당
C에서 동적 메모리 할당 작업을 할 때 개발자는 데이터 변경 사항을 수용하기 위해 메모리를 재할당해야 하는 경우가 종종 있습니다. 크기. C와 같은 언어와 달리 C는 명시적인 realloc 기능을 제공하지 않습니다.
대안 고려
현재 포인터를 삭제하고 더 큰 크기의 새 포인터를 할당하는 것은 비효율성으로 인해 최적의 솔루션이 아닙니다. 다음은 표준 라이브러리를 사용하는 더 나은 접근 방식입니다.
표준 템플릿 라이브러리(STL) 벡터 사용
STL 벡터는 동적 메모리 할당 및 크기 조정을 처리하는 편리한 방법을 제공합니다. 멤버 크기 조정 기능을 통해 효율적인 재할당 기능을 제공합니다. 재할당을 위해 벡터를 사용하는 방법은 다음과 같습니다.
코드 변환:
// Old C code using realloc Type* t = (Type*)malloc(sizeof(Type)*n) memset(t, 0, sizeof(Type)*m) // New C++ code using std::vector std::vector<Type> t(n, 0); // Resizing in C using realloc t = (Type*)realloc(t, sizeof(Type) * n2); // Resizing in C++ using vector::resize t.resize(n2);
벡터로 함수 호출:
To 벡터를 함수에 전달하려면 다음을 사용하십시오. 구문:
Foo(&t[0]); // Instead of Foo(t)
이는 포인터 인수를 기대하는 함수 인수와의 호환성을 보장합니다.
STL 벡터의 장점
메모리 재할당을 위해 STL 벡터 사용 여러 개의 장점:
위 내용은 C 개발자는 어떻게 메모리를 효율적으로 재할당할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!