Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Verständnisfrage zu Allokations-/Deallokationsoperatoren

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 <
000
23.08.2006, 15:30 Uhr
Yadgar



High!

Im Moment arbeite ich mich durch das "Aupperle"-Kapitel über Allokations- und Deallokationsfunktionen... laut Prototypen werden new und new[] jeweils ein Wert vom Type size_t übergeben, der aber im Aufruf dann gar nicht auftaucht... ist dieser Wert sozusagen im Typ des Objektes, für das Speicher reserviert wird, implizit enthalten?

Bis bald im Khyberspace!

Yadgar
--
Flagmaker - ein Programmier-Blog
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
23.08.2006, 15:48 Uhr
kronos
Quotenfisch
(Operator)



C++:
new T;

entspricht ungefähr

C++:
size_t s=sizeof(T);
malloc(s);

Mit dem size_t-Wert ist wohl einfach der benötigt Speicher gemeint.
--
main($)??<-$<='?'>>2?main($-!!putchar(
(("$;99M?GD??(??/x0d??/a:???;a"+'?'/4)
??($??)+'?'/3-2-1+$%2)??''?')):'?';??>
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
23.08.2006, 16:00 Uhr
Yadgar



High!


Zitat von kronos:

C++:
new T;

entspricht ungefähr

C++:
size_t s=sizeof(T);
malloc(s);

Mit dem size_t-Wert ist wohl einfach der benötigt Speicher gemeint.


Das würde ja heißen, dass size_t nur dann explizit angegeben werden muss, wenn new einen void-Zeiger liefern soll! Habe ich das jetzt richtig verstanden?

Bis bald im Khyberspace!

Yadgar
--
Flagmaker - ein Programmier-Blog
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
23.08.2006, 16:37 Uhr
(un)wissender
Niveauwart


Nein.
--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
24.08.2006, 12:42 Uhr
Pablo
Supertux
(Operator)



Zitat von Yadgar:
Das würde ja heißen, dass size_t nur dann explizit angegeben werden muss, wenn new einen void-Zeiger liefern soll! Habe ich das jetzt richtig verstanden?



nein, size_t ist ein Datentyp wie int, eine schwächere Form von int, die nur positive Zahlen zulässt. Da man keine negative Anzahl von bytes ansprechen kann, ist es sinnvoll das Datentyp size_t anzuwenden, wenn man über die Größe des Speichers (oder eine postive Größe im allgemeinen) redet, muss man aber nicht, man kann ruhig int bzw. long nehmen.

Hier ist, was der GNU GCC macht (Auszug aus stddef.h)


C++:
#ifndef __SIZE_TYPE__
#define __SIZE_TYPE__ long unsigned int
#endif
#if !(defined (__GNUG__) && defined (size_t))
typedef __SIZE_TYPE__ size_t;


--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!

Dieser Post wurde am 24.08.2006 um 12:43 Uhr von Pablo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ 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: