#include <iostream>
func(void *ptr)
{
*ptr = NULL;
}
int main()
{
void *ptr = (int*)malloc(sizeof(int));
func(ptr);
return 0;
}
수있는 사람이 문제를 해결할 수 있습니다. 이 포인터에 NULL을 할당하고 싶습니다. Main()에서 변경하지 마십시오.무효 포인터 오류
#include <iostream>
func(void *ptr)
{
*ptr = NULL;
}
int main()
{
void *ptr = (int*)malloc(sizeof(int));
func(ptr);
return 0;
}
수있는 사람이 문제를 해결할 수 있습니다. 이 포인터에 NULL을 할당하고 싶습니다. Main()에서 변경하지 마십시오.무효 포인터 오류
ptr = NULL;
을 사용하고 malloc
의 반품은 보내지 마십시오.
포인터가 값으로 전달됩니다. 따라서 func(void *ptr)
을 func(void **ptr)
으로 변경하고 func(&ptr)
실제로 참조에서 살펴보고, – StoryTeller
만약 OP가 포인터를 참조로 전달한다면 그것은 실제로'* ptr = NULL'이어야합니다 : –
@StoryTeller : 당신에게 동의합니다. – David
C malloc가 기본적으로 void 포인터를 반환하기 때문에 캐스팅하지 마십시오. 그럼 프로그램이 잘 실행되어야합니다
Noo .. 여전히 똑같은 !!! 나는 이해할 수 없다. * ptr = NULL을 할 수 없다. 아무도 exxact 이유 .. 대신 무시하고있다. –
왜 이것을해야합니까? 함수 호출에서 포인터를 변경하려면 포인터에 포인터를 전달해야합니다. 하지만 평소와 다른 점을 이해하지 못하실 까봐 두렵습니다. – JIghtuse
C에서'malloc' (또는 void 포인터를 리턴하는 함수)의 리턴을 던져서는 안됩니다. C++에서만 필요합니다. –
void func (void * ptr) { ptr = NULL; } int 주() { void * ptr = malloc (sizeof (int)); func (ptr); return 0; } –