webForumDet fria alternativet

Angående stack/heap

1 svar · 193 visningar · startad av Sang-drax

Sang-draxMedlem sedan juli 2002581 inlägg
#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];
developerMedlem 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.

130 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
127 ms — hämta tråd, inlägg och bilagor (db)