Jak vytvořit kopii Mix_Chunk? – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Jak vytvořit kopii Mix_Chunk? – C / C++ – Fórum – Programujte.comJak vytvořit kopii Mix_Chunk? – C / C++ – Fórum – Programujte.com

 

yaqwsx+9
Posthunter
20. 4. 2010   #1
-
0
-

Chtěl bych strukturu Mix_Chunk uchovávat v kontejnerech STL. Tak jsem si vytvořil obslužnou třídu, kde uchovávám ukazatel na Mix_Chunk, dělám hluboké kopie. Zde nastává problém. Po mém zkopírování vše funguje(přehrávání), ale jakmile zavolám Mix_FreeChunk, tak mi debugger zahlásí chybu v knihovně (SDL_Mixer.dll)

Invalid Address specified to RtlFreeHeap( 00C50000, 0B570040 )



Moje kopírovací funkce (resp. útržek, který kopíruje samotný Chunk) vypadá takto (z je můj objekt, ze kterého kopíruji):
c = new Mix_Chunk;


c->allocated = z.c->allocated;
c->alen = z.c->alen;
c->volume = z.c->volume;
c->abuf = new Uint8[z.c->alen];
memcpy(c->abuf, z.c->abuf, c->alen);


Nevíte, kde je chyba?

Nahlásit jako SPAM
IP: 85.160.123.–
Life is too short to remove USB mass storage safely...
Správný drsňák udělá z konzole cokoliv
liborb
~ Redaktor
+18
Guru
21. 4. 2010   #2
-
0
-

2x se asi stejnou paměť nesnažíš uvolnit, že? Možná to není ono, ale něco podobného mě trápilo, když alokaci provedl jeden thread a uvolnění paměti bylo v jiném threadu.

Nahlásit jako SPAM
IP: 85.207.166.–
yaqwsx+9
Posthunter
21. 4. 2010   #3
-
0
-

To liborb : Nevím jestli paměť dealokuju 2×, ale je pravda, že při kopírování alokuju v MainThread a dealokuje se ve vláknu SDL_Mixeru. Díky za stopu, prověřím.

Nahlásit jako SPAM
IP: 85.160.69.–
Life is too short to remove USB mass storage safely...
Správný drsňák udělá z konzole cokoliv
yaqwsx+9
Posthunter
21. 4. 2010   #4
-
0
-

Díky za radu! Problém byl skutečně v dealokování paměti jiným vláknem. Tak jsem si na mazání kopií napsal vlastní funkci, nedokážu sice při mazání ošetřit mazání přehrávaného zvuku, ale to ošetřuji jinak, takže problém se nevyskytuje.
Stále je mi ale záhadou, proč SDL_mixer nedefinuje funkci pro vytvoření kopie...

Nahlásit jako SPAM
IP: 85.160.69.–
Life is too short to remove USB mass storage safely...
Správný drsňák udělá z konzole cokoliv
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, 6 hostů

Podobná vlákna

Jak vytvorit .dll — založil jelleeeen

Jak vytvořit v PHP? — založil Daniel Herrmann

Jak vytvořit prstenec? — založil Vladimír

Jak vytvořit databazi — založil da11niel

Jak vytvořit referral system? — založil Draven

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ý