홈>
이 기사 를 읽는 동안 다음 단락을 발견했습니다.
와이즈 비즈 와이즈 비즈 이 코드는 int * 및 char *가있는 아키텍처에서 오작동 할 수 있습니다 자유는 후자의 포인터를 기대하기 때문에 다른 표현 유형.이것이 내가
Pointers to objects may have the same size but different formats. This is illustrated by the code below:
를 처음 읽은 것은 아닙니다int *p = (int *) malloc(...); ... free(p);
를 기대 유형.제 질문은
free
를 자유롭게하는 방법입니다. ?char*
관련 질문
- c : 문자열을 동적으로 할당하는 것과 관련하여 약간의 질문이 있습니다. 어떻게 해결할 수 있습니까?
- c : 널 포인터 재할당
- ANSI C -왜 malloc과 free가 char 포인터에 대해 작동하지 않습니까?
- c : 메모리를 할당하는 함수에 전달된 포인터는 포인터 NULL이 초기화된 경우에만 작동합니다.
- C 전문가, 이 segfault를 어떻게 해결할 수 있습니까?
- 매트릭스 메모리 할당은 동적 배열이 C에서 초기화되는 것을 허용하지 않습니까?
- c++ : C에서 구조의 연결 목록에 문제가 있습니다.
- char에 대해 이중 포인터 사용 -code의 문제는 무엇입니까?
- c : int를 포함하는 두 개의 다음 주소를 빼면 예상대로 4가 아닌 1이 반환됩니다.
- c : 인쇄 문자열은 공백에 도달할 때까지만 인쇄합니다.
참고:
에서malloc
의 반환 값을 캐스트해서는 안됩니다. C.이 질문은 잠재적으로 유효하지 않은 리소스를 읽는 위험을 보여줍니다. 읽은 리소스가 정확한지 확인하는 것이매우 중요합니다! 문제의 OP 리소스는시대에 잘못되지 않았지만,오래된 것입니다이며, 결과적으로유효하지 않습니다. K&R 2E는 아이러니하게도1 년이 지난이지만 표준을 따르기 때문에 여전히날짜가 매우 많습니다.
우리가 더 유명한 자원 (
와이즈 비즈 와이즈 비즈free
)을 참고하면 수동), 우리는 그free
를 볼 수 있습니다 실제로 포인터는void *
이어야합니다. 유형 :... 그리고 그만한 가치가있는 것은
<시간>두 경우 모두 C11/6.3.2.3p1 (C11 표준)에 설명 된대로 :
와이즈 비즈참고(처음 놓친 경우) :
void *
의 반환 값을 전송하지 않아야합니다. 결국,