C++ alokowanie i zwalnianie pamieci Ram

0

Witam,
Mam do napisania prosty program który miałby alokować i zwalniać pamieć w taki sposób by w menedżerze zadań pamieć ram rosła bardzo szybko i bardzo szybko jej zuzycie ma spadać ma to wyglądać jak w załaczniku coś w rodzaju trójkątów wzrost/ spadek w 2 wersji pamieć ma być zwalniania z opóżnieniem przy uzuciu funkcji sleep_for (przypadek na górze w załaczniku).
Testowałem moje programy w Menedżerze , znalazłem u grębosza przykład gdzie pamieć rośnie bardzo szybko ąz komp sie resetuje czyli pętla nieskączona i dynamiczna alokacja pamieci w sposób

 new int  

ale wtedy adresy nie zapisujemy i nie mozemy ich usunać. Wiec dałem warunek najbardziej optymalny wyszło mi że to 100 000 przy tworzeniu obietów w pętli bo dzieki temu wszystkie obiekty stworze i usunę gdy dam warunek wiekszy to on tworzy obiekty aż wrescie sie zawiesza wyrzuca wyjatek bad_alloc że niby pamieć sie skonczyła a tak naprawde w menedżerze jest jeszcze kilka giga. przy moim rozwiązaniu ona wolno rośnie i wolno spada gdy chciałem to przyspieszyć to albo zawiecha programu albo ten wyjątek mimo ze pamieć jest . Jak optymalnie wykonać te zadanie by wyglądało to jak na wykresie w załaczniku ?

void funkcja ()
 {

long int * bul;
long int*tab[100000];

     for(k = 0 ; k<100000 ; k++ )
     {
   
          
      bul=  new long int[k];
      tab[k]=bul;
   
      cout<<"faza tworzenia "<<bul<<"    "<<k<<endl;
    
		  }  
		              
   for( l = 0 ; l<100000 ; l++ ){
 
   	bul=tab[l];
 cout<<"faza usuwania "<<bul<<"   "<<l<<endl;
   	delete []bul; 
   	
   }
} 
0
vector<string> tb(1024);
for(k=0;;(++k)%=2*tb.size()) if(k<tb.size()) tb[k].resize(128*1024); else tb[k-tb.size()].resize(0);
0

Nie dokońca rozumiem, jest wprawdzie pewien ruch w pamieci ram , gdy sie zwiekszy tą liczbę z kodu z 128 na np 1280 to jest wiekszy ruch ale nie używamy tutaj operatorów new i delete , nie wiem czemu słuzy

(++k)%=2*tb.size() 

a szczegolnie modulo.

0
  1. new jest używany ale wewnątrz vector<> oraz wewnątrz string
  2. Jak czegoś nie wiesz to sprawdź http://ideone.com/um9PBq jak nie jesteś w stanie sprawdzić to nawet w dziennikarstwie tobie kariery nie wróżę.
0

Niestety ten program nie moze zawierac vectorów

0

Zamieniasz pierwszy wiersz na: string tb[1024]; i nie ma vectorów

1 użytkowników online, w tym zalogowanych: 0, gości: 1