C++struct 대상 이 가 변 크기 의 배열 을 가지 도록 합 니 다(상세 설명)
단일 요소 의 배열 을 struct 의 끝 에 놓 기 때문에 모든 struct objects 는 가 변 크기 의 배열 을 가 질 수 있 습 니 다.
struct mumble {
char pc[1];
};
// , struct
struct mumble *pmumbl = (struct mumble*)malloc(sizeof(struct
mumble) + strlen(string) + 1);
strcpy(pmumbl->pc, string);
책 에 서 는 이미 분명하게 말 했 지만 개인 적 으로 이해 할 때 부터 문제 가 생 겼 습 니 다.mumble 대상 의 pc 구성원 이 스 택 에 있다 고 잘못 생각 했 습 니 다.strcpy 작업 으로 인해 배열 이 넘 쳐 후속 메모 리 를 덮어 썼 다 고 생각 했 습 니 다.
실제 대상 포인터 pmumbl 이 가리 키 는 메모 리 는 모두 더미 위 에 있 습 니 다.아래 그림 과 같 습 니 다.
포인터 pmumbl 은 malloc 가 할당 한 전체 메모리 입 니 다.pmumbl->pc 는 이 메모리 의 첫 번 째 바이트 입 니 다.malloc 작업 은 전체 string 에 충분 한 메모 리 를 분 배 했 기 때문에 strcpy 에 서 는 pc 의 메모리 범위 가 넘 쳤 지만 struct 의 메모리 범위 가 넘 치지 않 아 strcpy 의 결 과 를 합 리 적 이 고 제어 할 수 있 습 니 다.이렇게 되면 struct 가 가 변 크기 의 배열 을 가지 고 더욱 유연 해 지 는 셈 이다.
이상 은 여러분 에 게 가 져 온 C++struct 대상 이 가 변 크기 의 배열(상세 설명)의 모든 내용 을 가지 게 되 었 습 니 다.많은 응원 부 탁 드 리 겠 습 니 다~
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Docker를 사용한 React 및 .NET Core 6.0 샘플 프로젝트 - 1부이 기사에서는 Entity Framework Core Code First 접근 방식을 사용하는 ASP.NET Core 6.0 WEP API의 CRUD(만들기, 읽기, 업데이트 및 삭제) 작업에 대해 설명합니다. 웹 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.