Ik zit met een probleem, en het betreft geheugentoewijzing. Ik heb best veel gezocht, maar alle gevonden resultaten hebben betrekking op problemen die véél ingewikkelder zijn. Mijn probleem is héél simpel, zie ter illustratie de volgende code:
Dit genereert een Segmentation Fault. Verander ik het datatype naar short int of verklein ik de dimensie van de matrix (zodanig dat de array dus minder geheugenruimte inneemt) dan werkt het wel (ongeveer tot +- 720x720).
Ik weet heel weinig van C en geheugentoewijzing. Ik weet wel dat ik op dit moment een slordige 400 MB aan geheugen vrij heb, en het lijkt me dat een matrix van 1000x1000 (een integer neemt 4 bytes toch?) er mákkelijk in moet passen. De grootte van de matrix is gedurende het hele programma constant; ik moet met instances van ~ 3000x3000 gaan werken welke de hele tijd tot mijn beschikking moet zijn (kan dus niet gedeeltes opslaan op hardeschijf enzo).
Wie-o-wie heeft de oplossing voor mijn simpele probleem? Bedankt!
code:
1
2
3
4
| main () {
int Matrix[1000][1000];
Matrix[759][862] = 1;
} |
Dit genereert een Segmentation Fault. Verander ik het datatype naar short int of verklein ik de dimensie van de matrix (zodanig dat de array dus minder geheugenruimte inneemt) dan werkt het wel (ongeveer tot +- 720x720).
Ik weet heel weinig van C en geheugentoewijzing. Ik weet wel dat ik op dit moment een slordige 400 MB aan geheugen vrij heb, en het lijkt me dat een matrix van 1000x1000 (een integer neemt 4 bytes toch?) er mákkelijk in moet passen. De grootte van de matrix is gedurende het hele programma constant; ik moet met instances van ~ 3000x3000 gaan werken welke de hele tijd tot mijn beschikking moet zijn (kan dus niet gedeeltes opslaan op hardeschijf enzo).
Wie-o-wie heeft de oplossing voor mijn simpele probleem? Bedankt!
Geef mij maar een Warsteiner.