Probleme mit malloc

Gast #1638292
Lesenswert?

Hallo ich mit Microsoft Visual Studio Express 2008 C++ eine kleine 
Beispielapplikation geschrieben. Beim übersetzen erscheint folgende 
Fehlermeldung:
>>error C2440: '=': 'void *' kann nicht in 'data *' konvertiert werden
>>Konvertierung von 'void*' in Zeiger auf nicht-'void' erfordert eine explizite 
Typumwandlung

Programmauszug:
1
struct data
2
{
3
   int value;
4
   char buffer[20];
5
   struct data *next;      // Nachfolger
6
   struct data *previous;  // Vorgänger
7
};
8

9
struct data *stack_ptr;
10

11
int stackinit(void) 
12
{
13
   stack_ptr=malloc(sizeof(struct data));
14
   if(stack_ptr != NULL) 
15
   {
16
      return 1;
17
   }
18
   else
19
      return 0;
20
}
Gast #1641532
Lesenswert?

Falls ichs richtig in Erinnerung hab:

In C kann doch void* implizit in jeden Pointertyp gecastet werden, in 
C++ nicht.

Das würde dann doch heißen, dass der Code des TE als C++ Code übersetzt 
wird und nicht als C Code oder?
#1642209
Lesenswert?

Das ist jetzt wieder etwas pauschal.
Wenn man sich sicher ist, daß man nur reservieren möchte und nicht
irgendwie intialisieren, kann man auch malloc() nehmen. So etwas
würde ich niemandem von vornherein verbieten.
Ob es hier Sinn macht, steht auf einem anderen Blatt.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren