누군가이 코드 부분을 설명해 주시겠습니까? 내가 틀렸다면 나를 바로 잡아라.malloc에 대한 질문
- 복귀 크기 (32 비트 시스템에 대해) 4 바이트 메모리 블록의 시작 포인터 점수
이 평균합니까? 왜int *longest = malloc(sizeof(int)); *longest =0;
malloc(4)
을 쓰는 것이 좋을까요? - 두 번째 줄에서 가장 긴 길이가 4 바이트 블록의 포인터 인 것을 의미합니까? 0에서 시작 하시겠습니까?
누군가이 코드 부분을 설명해 주시겠습니까? 내가 틀렸다면 나를 바로 잡아라.malloc에 대한 질문
int *longest = malloc(sizeof(int));
*longest =0;
이 평균합니까? 왜 malloc(4)
을 쓰는 것이 좋을까요?예, 그것은 하나의 int
에 대해 정확히 충분한 메모리를 가져옵니다. 주어진 크기를 명시 적으로 가정하지 않아야합니다. 장래에 다른 플랫폼으로 이식하는 것이 악몽입니다. 너 스스로 목격 했어. sizeof(int)
이 항상 4가되는 것은 아니다.
아니요,이 값은 longest
이 가리키는 새로 할당 된 메모리에 값 0을 할당합니다. 여기 *
은 비 참조 연산자이며 비공식적으로 "이 포인터가 가리키는 것과 함께 작업하고 싶습니다"라고 말합니다.
대단히 감사합니다. – zeejan
조금 더 해보면, 특정 할당의 경우에도 더 나은 관용구가 있습니다 :'int * longest = malloc (sizeof (* longest));'이것은 타입을 반복하지 않기 때문에 만약 언젠가 타입이 변경된다면, 모든 것이 여전히 일치합니다. –
C 또는 C++ 용입니까? 이 질문에 하나의 태그 또는 다른 태그를 포함시켜 명확하게하고 검색 등에 표시되도록하십시오. 또한, C++의 경우, 대신에'new'를 사용해야합니다. – KRyan