Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » malloc char?

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: [ 1 ] > 2 <
010
07.08.2003, 12:48 Uhr
virtual
Sexiest Bit alive
(Operator)


@beefy:

Zitat:

test.c:26: warning: assignment makes pointer from integer without a cast


Heißt also, daß der Compiler eine Signatur der Form

C++:
int malloc(...);


annimmt, was eigentlich dann der Fall sein dürfte, wenn stdlib.h nicht included ist.
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)

Dieser Post wurde am 07.08.2003 um 12:49 Uhr von virtual editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
011
07.08.2003, 13:00 Uhr
0xdeadbeef
Gott
(Operator)


Müsste der Compiler in dem Fall nicht noch eine zusätzliche Warnung rausschmeißen, sowas wie "implicit declaration of function malloc"?
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
012
07.08.2003, 13:37 Uhr
ao

(Operator)


@deadbeef: Es gibt keine verbindlichen Regeln, wann Warnungen geschmissen werden müssen. Die meisten Compiler haben verschiedene Warninglevel-Einstellungen, die von paranoid bis scheißegal reichen können.

ao
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
013
07.08.2003, 14:17 Uhr
BeS



Hallo,
danke euch, es funktioniert jetzt soweit

Eine Frage hätte ich noch. Wann muß man dann casts überhaupt verwendet? Weil es sind ja eigentlich immer Zeiger...

Im K&R habe ich gelesen:
"In C vereinbart man korrekterweise, daß malloc ein Zeiger auf void liefert; dieser Zeiger wird dann jeweils explizit mit einer Umwandlungsoperation in den gewünschten Typ umgewandelt."

(Danach kommt auch ein Beispiel mit char*, das gecastet wird)

Deswegen bin ich eigentlich davon ausgegangen das man den Rückgabewert von malloc immer castet, was ja anscheinend nicht stimmt. Wann dann wird es dann aber überhaupt benötigt?

Danke!
--
If art interprets our dreams, the computer execute them in the guise of programs!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
014
07.08.2003, 14:27 Uhr
kronos
Quotenfisch
(Operator)


wenn stdlib.h gefehlt hätte, käme doch sicher was von malloc() "missing prototype" oder wenigstens beim linken "undeclarded reference" oder so...
--
main($)??<-$<='?'>>2?main($-!!putchar(
(("$;99M?GD??(??/x0d??/a:???;a"+'?'/4)
??($??)+'?'/3-2-1+$%2)??''?')):'?';??>
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
015
07.08.2003, 14:29 Uhr
BeS




Zitat:
kronos postete
wenn stdlib.h gefehlt hätte, käme doch sicher was von malloc() "missing prototype" oder wenigstens beim linken "undeclarded reference" oder so...


Nein, es war schon stdlib.h was gefehlt hat. Wenn ich es wieder raus nehme bekomme ich wieder diese Fehlermeldung:

$ gcc test.c
test.c: In function `main':
test.c:28: warning: assignment makes pointer from integer without a cast

mehr nicht...
--
If art interprets our dreams, the computer execute them in the guise of programs!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
016
07.08.2003, 14:44 Uhr
Pablo
Supertux
(Operator)


Das ist keine "Fehlermeldung" sondern nur eine Warnung. Die Datei a.out wird tatsächlich erzeugt und du kannst sie ausführen. Eine Warnung sagt dir nur, dass es viellieicht nicht klappen wird. Aber man kann die binaries benutzen, auch, wenn es Warnungen gibt.
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
017
07.08.2003, 15:06 Uhr
0xdeadbeef
Gott
(Operator)


Tatsächlich. Ich habs mal mit der Datei:

C++:
main(){
  char *s = malloc(2);
  free(s);
}


getestet.

Code:
$ gcc t.c
t.c: In function `main':
t.c:2: Warnung: initialization makes pointer from integer without a cast
$ gcc -Wall t.c
t.c:1: Warnung: return type defaults to `int'
t.c: In function `main':
t.c:2: Warnung: implicit declaration of function `malloc'
t.c:2: Warnung: initialization makes pointer from integer without a cast
t.c:3: Warnung: implicit declaration of function `free'
t.c:4: Warnung: control reaches end of non-void function


--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: [ 1 ] > 2 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: