ReallocADsMem 함수(adshlp.h)
ReallocADsMem 함수는 기존 메모리 블록을 재할당하고 복사합니다.
구문
LPVOID ReallocADsMem(
[in] LPVOID pOldMem,
[in] DWORD cbOld,
[in] DWORD cbNew
);
매개 변수
[in] pOldMem
형식: LPVOID
복사할 메모리에 대한 포인터입니다. ReallocADsMem 은 복사된 후 FreeADsMem 을 사용하여 이 메모리를 해제합니다. 추가 메모리를 할당할 수 없는 경우 이 메모리는 해제되지 않습니다. 이 메모리는 AllocADsMem, AllocADsStr, ReallocADsMem 또는 ReallocADsStr 함수와 함께 할당되어야 합니다.
호출자는 이 포인터를 FreeADsMem에 전달하여 더 이상 필요하지 않은 경우 이 메모리를 해제해야 합니다.
[in] cbOld
형식:DWORD
복사할 메모리의 크기(바이트)입니다.
[in] cbNew
형식:DWORD
할당할 메모리의 크기(바이트)입니다.
반환 값
형식: LPVOID
성공하면 함수는 할당된 새 메모리에 대한 포인터를 반환합니다. 그렇지 않으면 NULL을 반환합니다.
설명
cbNew가 cbOld보다 작으면 기존 메모리가 새 메모리 크기에 맞게 잘립니다.
예제
다음 코드 예제에서는 ReallocADsMem을 사용하여 문자열을 확대하는 방법을 보여 줍니다.
LPWSTR pwszPrefix = L"LDAP://"
DWORD dwOldSize = (lstrlenW(pwszPrefix) + 1) * sizeof(WCHAR);
LPWSTR pwszADsPath = (LPWSTR)AllocADsMem(dwOldSize);
if(pwszADsPath)
{
LPWSTR pwszDN = L"DC=fabrikam,DC=com";
wcsncpy_s(pwszADsPath, pwszPrefix); // Path becomes "LDAP://"
wprintf(L"path = %s\n", pwszADsPath);
DWORD dwNewSize = (lstrlenW(pwszPrefix) + lstrlenW(pwszDN) + 1) * sizeof(WCHAR);
/*
If successful, this will free the old path buffer, so it does not have to be
freed manually. But if it fails, the original memory still exists, so the
reallocated memory pointer is temporarily placed in another variable.
*/
LPWSTR pwszNewPath = (LPWSTR)ReallocADsMem(pwszADsPath, dwOldSize, dwNewSize);
if(pwszNewPath)
{
pwszADsPath = pwszNewPath;
// Path is still "LDAP://"
wcsncat_s(pwszADsPath, pwszDN);
// Path is "LDAP://DC=fabrikam,DC=com"
wprintf(L"path = %s\n", pwszADsPath);
}
else
{
wprintf(L"Unable to allocate additional memory.");
}
// Free remaining memory.
FreeADsMem(pwszADsPath);
}
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows Vista |
지원되는 최소 서버 | Windows Server 2008 |
대상 플랫폼 | Windows |
헤더 | adshlp.h |
라이브러리 | Activeds.lib |
DLL | Activeds.dll |
추가 정보
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기