Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

operator new [] ( size_t, align_val_t )

10 views
Skip to first unread message

Markus Schaaf

unread,
Dec 7, 2018, 9:00:05 AM12/7/18
to
Der "normale"

operator new [] ( size_t )

für Arrays ruft den einfachen

operator new ( size_t )

Weiß jemand, ob das bei den neuen Alignment-Formen auch gilt? Ich will
nur wissen, ob es reicht, die Object-Form zu überschreiben, um die
Array-Form gleich mit zu erwischen.

MfG

Bonita Montero

unread,
Dec 8, 2018, 12:50:04 PM12/8/18
to
Hier hat das schon mal jemand gefragt:
http://stackoverflow.com/questions/506518/is-there-any-guarantee-of-alignment-of-address-return-by-cs-new-operation

Und das Zitat aus dem Standard ist:
"The pointer returned shall be suitably aligned so that it can
be converted to a pointer of any complete object type and then
used to access the object or array in the storage allocated
(until the storage is explicitly deallocated by a call to a
corresponding deallocation function)."
Wobei ich mich frage, ob das nur Objekt-Typen gilt die die
eigenen Datentypen des C++-Standards beinhalten. Es gibt ja
noch bei manchen Compilern SSE/AVX(2)/AVX-512-Datentypen.

Markus Schaaf

unread,
Dec 8, 2018, 2:00:08 PM12/8/18
to
Am 08.12.18 um 17:39 schrieb Bonita Montero:
Danke für Deine Mühe, aber das beantwortet meine Frage nicht. Habe ich
mich so missverständlich ausgedrückt? Dann nochmal in Prosa: :-)

In C++11 wird klargestellt, dass die Default-Implementierung von

operator new [] ( size_t )

intern die Object-Form

operator new ( size_t )

aufruft. Das ist praktisch, wenn man die Funktionen ersetzen möchte.
Dann braucht man nämlich meist nur die Object-Form ersetzen.

Nun wurden aber noch zwei neue Allocator-Funktionen eingeführt:

operator new ( size_t, align_val_t )
operator new [] ( size_t, align_val_t )

Und ich möchte wissen, ob für diese beiden das Gleiche gilt.

MfG

Udo Steinbach

unread,
Dec 9, 2018, 7:30:13 AM12/9/18
to
Auf http://eel.is/c++draft/new.delete#array-4 lese ich: Default behavior:
Returns operator new(size), or operator new(size, alignment), respectively.
Auf https://en.cppreference.com/w/cpp/memory/new/operator_new
entsprechendes. Dieses Verhalten scheint mir logisch, mir fällt nichts
dagegensprechendes ein, also reichen mir diese beiden Stellen für ein "ja".
--
Fahrradverkehr in Deutschland: http://radwege.udoline.de/
GPG: A245 F153 0636 6E34 E2F3 E1EB 817A B14D 3E7E 482E

Markus Schaaf

unread,
Dec 9, 2018, 8:00:03 AM12/9/18
to
Am 09.12.18 um 10:34 schrieb Udo Steinbach:
> Auf http://eel.is/c++draft/new.delete#array-4 lese ich: Default behavior:
> Returns operator new(size), or operator new(size, alignment), respectively.

Kannte ich noch nicht. Prima! Danke.

> Auf https://en.cppreference.com/w/cpp/memory/new/operator_new
> entsprechendes.

Da hatte ich nicht weit genug runter gescrollt.

MfG
0 new messages