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

Realloc – C / C++ – Fórum – Programujte.comRealloc – C / C++ – Fórum – Programujte.com

 

Martin
~ Anonymní uživatel
1600 příspěvků
10. 11. 2013   #1
-
0
-

Dobrý den,

studuji momentálně alokování dynamické paměti a mám problém pochopit jednu část kódu:

pom = (char *) realloc((void *) v, x * MEGABAJT);

Kdyby byl někdo hodný a přesně mi parametr po parametru vysvětlil tak bych byl rád, prošel jsme hodně stránek a prostě to nějak nemůžu pochopit, jak to celý funguje. Celý kód, kdyby někdo potřeboval pro orientaci zde:

#include <iostream>
#include <stdlib.h>

using namespace std;

int main(void)
{
    const int MEGABAJT = 1024*1024;
    unsigned long x, a;
    char *pom, *v = NULL;

    do
    {
        cout << "Zadejte pocet megabajtu, 0 pro konec: ";
        cin >> x;

        pom = (char *) realloc((void *) v, x * MEGABAJT);

        if ((pom == NULL) && (x))
        {
            cout << "Nedostatek pameti.\n";
        }
        else
        {
             v = pom;
             // vyplneni pameti jednickami.
             //To pocitac trosilinku zamestna :-)
             for (a = 0; a < x * MEGABAJT; a++)
             {
                v[a] = '1';
             }
        }
    } while (x);

    free(pom);
    free(v);

    return 0;
}

Děkuji všem za reakci. Prosím o nějakou jednodušší odpověď.

Nahlásit jako SPAM
IP: 78.102.253.–
KIIV
~ Moderátor
+43
God of flame
10. 11. 2013   #2
-
0
-

reallocu jen predhodis starou adresu a novou velikost, sam se postara o presunuti (+ jsou tam pretypovani kvuli c++, ktere to jinak nenecha zkompilovat)

a co se tyce celyho kodu, tak se hodne divim ze to nepada.. (krom toho selze realokace nekde kolem pulky mozne ram a uvolnovani ruznych NULL pointeru)...

Nahlásit jako SPAM
IP: 94.112.35.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Martin
~ Anonymní uživatel
1600 příspěvků
10. 11. 2013   #3
-
0
-

Tak ten kód jsem našel na internetu :) jinak díky akorát bych rád věděl jednoduše nějaká další názorná využití reallocu, nepotřebuji kód ale jen tak teoreticky :) , trošku se v tom ztrácím. Protože zatím, krom něčeho málo mi přijde docela zbytečný ale asi se mýlím.

Nahlásit jako SPAM
IP: 78.102.253.–
KIIV
~ Moderátor
+43
God of flame
10. 11. 2013   #4
-
0
-

da se pouzit treba na pole s dynamickou velikosti... abys nemusel zabrat predem celou ramku, ale jen zvetsoval to pole pokud je potreba vetsi.

Nahlásit jako SPAM
IP: 94.112.35.–
Program vždy dělá to co naprogramujete, ne to co chcete...
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, 11 hostů

Podobná vlákna

Realloc — založil oxidián

Realloc() — založil Kuba-$

Realloc a NULL — založil olgo

Realloc matice — založil constantine

Proč padá funkce po realloc? — založil oxidián

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ý