[c++] maximum grootte array?
Geplaatst: zo 11 aug 2013, 00:05
Beste lezer,
ik ben bezig met een opdracht over image processing, en had bedacht dit eens in c++ te doen, om zo de taal beter te leren kennen. Ik heb wel wat ervaring met programmeren, en heb een course c++ gevolgd, maar merk regelmatig dat ik er nog niet echt in thuis ben.
Afijn, voor dit programma moet ik een plaatje inladen. Dit doe ik dmv het verkrijgen van de rgb waardes, die ik in een 3 dimensionale (byte) array wil zetten:
waar H en W de hoogte en breedte van het plaatje zijn. Het programma werkt goed, totdat ik probeerde wat grotere plaatjes in te laden (op dit moment compiled de code, maar crasht het programma). Dit vond ik gek, want het lijkt me sterk dat dit aan een gebrek aan geheugen ligt. Om de oorzaak te vinden, heb ik in een leeg project wat geexperimenteerd met de initialisatie van de rgb array. Daarbij vond ik dat:
Dit werkt nog wel.
Op dit moment crasht het programma.
Maarrr, aangezien elke entry precies 1 byte in gebruik neemt, is deze array 'slechts' 2.08MB groot. Kan iemand mij vertellen wat hier het probleem is, en hoe ik dit eventueel kan oplossen (dynamic allocation met pointers oid ()?
Alvast bedankt
ik ben bezig met een opdracht over image processing, en had bedacht dit eens in c++ te doen, om zo de taal beter te leren kennen. Ik heb wel wat ervaring met programmeren, en heb een course c++ gevolgd, maar merk regelmatig dat ik er nog niet echt in thuis ben.
Afijn, voor dit programma moet ik een plaatje inladen. Dit doe ik dmv het verkrijgen van de rgb waardes, die ik in een 3 dimensionale (byte) array wil zetten:
Code: Selecteer alles
uint8_t rgb[H][W][3];
Code: Selecteer alles
unsigned char RGB[2082528];
Code: Selecteer alles
unsigned char RGB[2082529];
Maarrr, aangezien elke entry precies 1 byte in gebruik neemt, is deze array 'slechts' 2.08MB groot. Kan iemand mij vertellen wat hier het probleem is, en hoe ik dit eventueel kan oplossen (dynamic allocation met pointers oid (
Code: Selecteer alles
unsigned char*** RGB;
Alvast bedankt