2014-12-04 2 views
-2

얘들 아 내가 이런 char 형의 동적 할당을하려고, C에서 프로그래밍 해요 :의 malloc 반환 무효

char **word1 = malloc(sizeof(char *)* 1); 
char **word2 = malloc(sizeof(char *) * 1); 

을하지만 그 같은 에로을 결과입니다 : 무효 '에서 유효하지 않은 변환 * '~'char ** '[-fupermissive]

나를 도와주는 모든 사람에게 감사드립니다.

+0

malloc은'void *'를 반환합니다.'char *'에 캐스팅 할 필요가 있으면 등호 뒤에'(char *)'를 넣으십시오. –

+2

그렇다면 C 코드를 컴파일하는 것이 아니라 C++ 코드를 컴파일 할 가능성이 높습니다. 그리고 만약 C++을 프로그래밍한다면'malloc' /'free'를 사용해서는 안됩니다. 요즘에는 C++에서 포인터를 거의 사용하지 않아도됩니다. –

+0

는 C++ 컴파일러의 오류와 비슷합니다. – sgarizvi

답변

4

c 컴파일러 [gcc]에서이 오류가 표시되지 않습니다.

c++ 컴파일러 [g++]에서이 오류가 발생할 수 있습니다.

  1. 위의 코드를 컴파일하는 c 컴파일러를 사용하거나,이 없애.
  2. c++ 컴파일러를 사용하고 malloc() 반환 값으로 char ** 캐스트를 추가하십시오.

참고 : IMO는 1 위를 차지하십시오. 그것은 좋은 연습 neither to use malloc() family in c++ 아니며 casting the returnmalloc()도 아니야.

6

교양있는 추측 : C++ 컴파일러를 사용 중입니다. C는 void*에서 다른 포인터 유형으로의 캐스트를 필요로하지 않지만 C++은 캐스트를 필요로하지 않습니다.

C 컴파일러를 사용하거나 malloc에 의해 반환 된 값을 캐스팅하는 것을 고려하십시오.

+2

"C 컴파일러를 사용하거나 malloc에서 반환 한 값을 캐스팅하는 것을 고려하십시오." * 둘 다 아니야 !! * – Roddy

+4

그 중 하나가 강조되어야하는 것입니다, Roddy. –