Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C++: Muistin varaaminen

Jäynis [30.11.2004 14:31:21]

#

Tämmönen onnistuu:

class luokka
{
public:
unsigned char *taulukko;
luokka();
};
luokka::luokka()
{
      taulukko=new unsigned char[10];
}
int main(int argc, char *argv[])
{
  luokka Luokka;
  system("PAUSE");
  return 0;
}

Mut tämmönen ei:

class luokka
{
public:
unsigned char **taulukko;
luokka();
};
luokka::luokka()
{
       taulukko=new unsigned char[10][10];
}
int main(int argc, char *argv[])
{
luokka Luokka;
  system("PAUSE");
  return 0;
}

Eli kysymys kuuluu, miten varata muistia kaksiuloitteiselle taulukolle? Kääntäjänä toimii Dev-C++.

FooBat [30.11.2004 15:20:06]

#

unsigned char * temp = new unsigned char[10*10];
unsigned char ** taulukko = new unsigned *char[10];
for (int i = 0; i < 10; i++)
  taulukko[i] = temp[i*10];

---
taulukko[2][4] = '?';
---
delete taulukko[0];
delete taulukko;

Jotenkin noin. Eli varaat alkioiden tarvitseman tilan kerralla ja varaat lisäksi indeksöintitaulukon, jonka alkiot koodaat sijoittamaan oikeaan kohtaan dataa.

Jäynis [30.11.2004 15:28:34]

#

No nyt alko iso täti laulaan:)
Kiitoksia

FooBat [30.11.2004 16:29:40]

#

Tuossa oli itseasiassa pari typoa. Taulukkoon pitää tietenkin kopioida osoite temp tauluun eikä itse arvoa

for (int i = 0; i < 10; i++)
  taulukko[i] = temp + i*10; // tai &temp[i*10]

Samoin delete pitää varmaan olla delete[]. Eihän näitä C++:n juttuja enää muista.

tejeez [30.11.2004 16:40:42]

#

Ihanaa, joku käyttää system("pause"):a ;)

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta