Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

Programmeren

C(++) | Groot geheugen aanvraag

Joppe
4 antwoorden
  • Hallo allemaal,

    Ik moet een enorm grote tabel inlezen via C++ (maar het kan precies hetzelfde in C) en maak gebruik van een 2-dimensionale array waar ik alle waarden in zet. Maar als ik nu zeg:

    char array[220000][30];

    Dan krijg ik runtime meteen een error, dit zal ongetwijfeld komen doordat mijn array zoveel geheugen in beslag neemt.

    Maar ik heb 512 DDR geheugen en de array neemt "maar" 220000*30*1 (een char is 1 byte groot) = 6600000 bytes = 6.3 Mb in beslag.

    Heeft iemand hier een oplossing voor? Ik gebruik M$ Visual studio 6.
  • Ik denk dat je opdracht een 'intelligentere' oplossing moet opleveren. Hoewel… Het zou geen probleem moeten zijn als je een 32-bits compiler gebruikt. Echter, weet je zeker dat de array-definitie de runtime error oplevert? Het kan ook ergens anders mee te maken hebben.

    Overigens, als ik met grote hoeveelheden gegevens werk probeer ik meestal om niet alles in te lezen. Indien het echt nodig is dan maak ik gebruik van een 'Memory Mapped File' in combinatie met een tijdelijk bestand zodat ik in principe de hoeveelheid virtueel geheugen uitbreid zonder al te veel druk op het geheugen zelf te zetten. Maar da's een vrij Windows-specifieke oplossing die een goede kennis van de Windows API vereist.
  • Ik ben maar een eenvoudige ziel en van C++ heb ik al bijna helemaal geen kaas gegeten. Maar was het niet zo dat een char alleen maar geschikt is voor één karakter of een kleine integer (<256)?
  • volgens mij zit dat probleem absoluut niet in de geheugengrootte.

    Als je toch noodzakelijk vindt geheugen vrij te maken kan dat geloof ik met het commando "malloc"

    In C tenminste wel.

    Haike

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.