Angående stack/heap

C/C++

1 svar · 211 visningar · startad av Sang-drax

Medlem sedan juli 2002581 inlägg
Trådstart#1

I tråden om {} påpekas att heapen är mycket slöare att allokera på.
Skulle denna kod fungera? Jag knappt testat den alls, men den har ej kraschat.

#include <alloca/alloca.h>
struct _stack_t {} stack;
void* operator new(size_t size, _stack_t)
{
    return alloca(size);
}

//i main kan man allokera dynamiskt på stacken så här
char* data = new(stack) char[10000];
Medlem sedan aug. 2001458 inlägg
#2

Usch ;)

Visst funkar det som du gör i det här fallet, men aj så farligt. Om du istället allokerar ett objekt, hur körs destruktorn? Inte.

När man vill allokera på stacken, är det något man ska vara medveten om, eftersom stacken är begränsad och man måste utnyttja den med omdöme. Syntaxen "CString c("hej");" är utmärkt för det.

Att heapen är långsam att allokera på betyder väl inte att man ska låta bli den, utan snarare använda sitt goda omdöme innan man väljer var man lägger objektet.

268 ms totalt · 4 externa anrop · v20260731065814-full.d34c6d5a
133 ms — deklarationer (db)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)
134 ms — ändringar (db)