Osetreni podminky nedostatku pameti – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Osetreni podminky nedostatku pameti – C / C++ – Fórum – Programujte.comOsetreni podminky nedostatku pameti – C / C++ – Fórum – Programujte.com

 

8. 5. 2012   #1
-
0
-

Ahoj,

potrebovala bych pomoci s jednim problemem. Mam zdrojak: 

void A()
{
        .......
       stack.push_back(x);


       .......
 };

void B()
{

      .....
      graf.reserve(x);
      .....
};

int main()
{
      .......
      stack.reserve(x);
      .........
return 0;
}

a nektery z tech tri prikazu mi nekde asi bere vic pameti nez ma program povoleno. Potrebovala bych proto poradit jak napsat nejaky try-catch blok aby mi program vratil (misto standartni 0) treba 1, kdyz bude chyba ve voidu A, 2 kdyz bude chyba ve voidu B a 3 kdyz bude chyba v main. 

Jinak zdrojova data na kterych to je bohuzel neznam a opravdu asi nemam jinou moznost jak zjistit kde to bere moc pameti nez takhle. A reserve zase nechci z programu vyhazovat kvuli rychlosti...... :-(.

Nahlásit jako SPAM
IP: 77.48.32.–
_Radek_
~ Anonymní uživatel
88 příspěvků
8. 5. 2012   #2
-
0
-

Jaký je přesně typ proměnných stack a graf ? Je to některý z kontejnerů STL knihovny ? A kde jsou alokovány, stack nebo heap ? Pokud jsou na stacku, tak standardně je max velikost asi 1MB, což u složitějších objektů hravě překročíš.

Pokud voláš stack.reserve(x) před stack.push_back, tak podle mě chyba ve funkci A nebude.

Nahlásit jako SPAM
IP: 91.187.60.–
jano
~ Anonymní uživatel
85 příspěvků
8. 5. 2012   #3
-
0
-

niesom si isty ale skusil by som nieco na tento styl 

#include <iostream>
#include <exception>
try
{
  int * myarray= new int[1000];
}
catch (bad_alloc&)
{
  cout << "Error allocating memory." << endl;
}

Nahlásit jako SPAM
IP: 85.135.184.–
9. 5. 2012   #4
-
0
-

_Radek_: jsou to vector<int> a jsou na heapu. Chyba ve funkce A byt muze. Mam rezervovany jenom nejaky odhad, ale presny pocet prvku neznam. Ale mas pravdu v tom, ze ta pravdepodobnost chyby tam je mala. Dik moc

jano: dik

Nahlásit jako SPAM
IP: 77.48.32.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 56 hostů

Podobná vlákna

Podmínky... — založil laik

Podmínky v C# — založil JD_1609

Podmínky — založil martin

Podmínky ve VB — založil Stanislav.Ospaly

Pascal - podmínky — založil Thom1996

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý