2014-02-20 2 views
0

내 코드에서 malloc에 ​​문제가있는 것 같습니다. 여기에 무슨 일이 일어나고 있는지. 몇 가지 값으로 생성 된 구조체가 있습니다. 거기에서 구조체의 배열을 만들고 싶습니다. 나는 struct와 right 포인터를 가지고 있다고 생각하지만 확실하지는 않다. 여기 C에서 malloc 문제

이 구조체의 : 거기에서

typedef struct{ 
    char name[25]; 
    int courseID; 
} course; 

,이에 의해 새로운 구조체를 시작하고 동시에 그것을 malloc을하려고 여기에서

course *courses = malloc(25*sizeof(course)); 

, 내가 받고 있어요 오류 :

Invalid conversion from 'void*' to 'course*' [-fpermissive] course *courses = malloc(25*sizeof(course));

나는 이것이 실제로 무엇을 의미하는지 모르겠다 ... 나는이 과정에서 완전히 벗어날 수 있음을 안다. 아이디어, 그래서 당신이 줄 수있는 모든 도움이 위대한 것입니다!

+6

당신은 C가 아닌 C로 컴파일하고있다. 컴파일러를 gcc로 변경하거나 IDE에서 해당 옵션을 변경한다. – milleniumbug

+0

[malloc의 결과를 캐스팅 할 수 있습니까?] (http://stackoverflow.com/questions/605845/do-i-cast-the-result-of-malloc) –

답변

1

C++ 컴파일러를 사용해야합니다. C 컴파일러로 컴파일하려고합니다.

.c이 아닌 파일 이름이 .cpp 또는 .cc이 아닌지 확인하십시오.

당신은 또한 당신이 (새로운 구조체를 시작했지만 나는 번역 중이다) 초기화하려고한다고 말했다. Malloc은 그렇게하지 않을 것입니다. Malloc 할당 메모리는 그 메모리의 최종 사용자로부터 남겨진 임의의 값을 포함합니다. calloc 함수는 할당 후 메모리를 0으로 설정하기 때문에 원하는대로 더 잘 작동 할 수 있습니다.

+0

"* initiate *"가 "* initialise *"가 아니라 "* instantiate *"가되어야합니다. – alk

1

할당 된 메모리에 대한 void 포인터를 반환하는 malloc을 사용하여 메모리를 초기화하고 있습니다. 그런 다음이 포인터를 코스 포인터에 지정합니다. 따라서 포인터가 일치하지 않아 경고가 발생합니다. 이것을 우회하려면 use