Avatar billede f2f4 Novice
11. januar 2006 - 16:53 Der er 5 kommentarer og
1 løsning

CB4, struct og array, memmoryfnider

Skal til at tilrette et ældre dll program der nogle gang går i stå (helt fast) ved en memmory allokering af et array. Jeg spekulerer på om der er noget konkret galt i nedenstående eksempel eller om man kunne forestille sig at heap'en bliver 'overfyldt'!?

struct TDef
{
  int a;
  int b;
  int c;
  ::
}

struct TEks
{
  int abc;
  TDef def;
  ::
}

Kode:
struct TEks *EksGlobal = new TEks;
Eks->def = new TDef [1000];
memset(Eks->def, 0, sizeof(TDef)*1000);

Det er linien 'Eks->def = new TDef [1000]' der i enkelte tilfælde får C++Builder til at brage ned. Antallet (de 1000) er variabelt, og jeg tænker på om heap´en løber tør? (Så kan man måske prøve at pille ved 'et eller andet' (???) under 'Projeck Options'?)

Mange tak for eventuel hjælp.

/Morten
Avatar billede f2f4 Novice
11. januar 2006 - 16:55 #1
Skrivefejl ... struct TEks *Eks = new TEks;
Avatar billede arne_v Ekspert
11. januar 2006 - 17:08 #2
TDef def;

Eks->def = new TDef [1000];

lyder mærkelig

ikke pointer = new noget
Avatar billede f2f4 Novice
11. januar 2006 - 17:14 #3
Sorry tastefejl ...

struct TDef
{
  int a;
  int b;
  int c;
  ::
}

struct TEks
{
  int abc;
  TDef* def;
  ::
}

Kode:
struct TEks *EksGlobal = new TEks;
EksGlobal->def = new TDef [1000];
memset(EksGlobal->def, 0, sizeof(TDef)*1000);
Avatar billede arne_v Ekspert
11. januar 2006 - 20:26 #4
der ringer ikke lige nogle alarmklokker hos mig ved den kode
Avatar billede f2f4 Novice
13. januar 2006 - 09:38 #5
Ok, men tak alligevel.
Avatar billede f2f4 Novice
08. februar 2006 - 17:26 #6
lukket
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester