Malloc을 사용할 때 잘못된 변환이 발생합니까?
malloc() 함수를 사용하여 코드를 컴파일하려고 하면 "잘못된 변환"이 발생할 수 있습니다. void* to char*' 오류. 이 문제는 관련된 데이터 유형이 다르기 때문에 발생합니다.
오류 이해
malloc() 함수는 힙에 메모리를 할당하고 void* 유형의 포인터를 반환합니다. . 이 포인터는 모든 포인터 유형의 변수에 할당될 수 있지만 올바르게 캐스팅하는 것이 중요합니다. C에서 char*에 void*를 할당하려면 호환성을 보장하기 위해 명시적인 캐스팅이 필요합니다.
해결책: 유형 캐스팅
이 오류를 해결하려면 반환을 캐스팅할 수 있습니다. foo에 할당하기 전에 malloc()의 값을 char*에 할당합니다. 수정된 코드는 다음과 같습니다.
<code class="cpp">char *foo = (char*)malloc(1);</code>
(char*) 캐스트를 사용하면 void* 포인터를 char* 포인터로 명시적으로 변환하여 foo에 대한 적절한 할당이 가능해집니다.
파일 형식 참고
g를 사용하여 코드를 .cpp 파일로 컴파일하는 것이 적절하다는 점을 언급할 가치가 있습니다. C 코드는 일반적으로 .cpp 확장자로 저장되고 C 구문을 지원하는 g 컴파일러를 사용하여 컴파일됩니다.
위 내용은 다음은 기사의 본질을 포착하는 몇 가지 질문 기반 제목입니다. * Malloc을 사용할 때 왜 \"void*에서 char*로의 잘못된 변환\" 오류가 발생합니까? * \"를 수정하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!