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

Parachute deployed – C / C++ – Fórum – Programujte.comParachute deployed – C / C++ – Fórum – Programujte.com

 

21. 4. 2007   #1
-
0
-

Mohl by mi nekdo objasnit, co presne znamena SDL chyba #245 "Segmentation Fault (Parachute Deployed)"? Dik

Nahlásit jako SPAM
IP: ...–
21. 4. 2007   #2
-
0
-

No tak se trosicku vic rozepisu.. Mam loader 3DS souboru; ani ne "originalnich" z 3DS Maxu, ale vyexportovanych z Cinema 4D.. Ja mam ovsem Blender, ktery je exportuje zase trosicku jinak.. Ja jsem napsal jen nepatrnou cast, takze se v tom nevyznam az zas tak, jak bych chtel, ale tohle mi prijde absolutne jasne a nechapu, proc mi to proboha hazi chybu.



/******************************************************
*
* takze mam strukturu "chunk"
*
* 3ds soubor se sklada z bloku; kazdy ma na
* zacatku "ID" bloku, svoji delku a potom
* samotna data
*
******************************************************/

struct tChunk
{
unsigned short int ID; // id bloku
uint length; // delka
uint bytesRead; // pocet jiz prectenych bytu
};

/******************************************************
*
* rekurzivni funkce, ktera postupne prochazi bloky
*
******************************************************/

uint version;

// alokujeme misto pro dva nove bloky
tChunk *current_chunk = new tChunk;
tChunk *temp_chunk = new tChunk;


// nacte novy blok
//
// prvni dva byty ulozi do ID
// nasledujici 4 jsou delka bloku
// tedy 6 bytu v bytesRead
read_chunk(current_chunk);

switch(current_chunk->ID){

...

case OBJECTINFO:
{
read_chunk(temp_chunk); //opet 6 bytu v bytesRead
temp_chunk->bytesRead += fread(&version, 1, temp_chunk->length - temp_chunk->bytesRead, fr); // pricte asi 87 bytu


// tady to spadne
// dokonce i jen pri pokusu vytisknout jednu z tech promennych
// zatimco s modelem z Cinema 4D to v pohode bezi dal...

m_CurrentChunk->bytesRead += m_TempChunk->bytesRead;

...

Nahlásit jako SPAM
IP: ...–
Jura
~ Anonymní uživatel
637 příspěvků
21. 4. 2007   #3
-
0
-

Hmm, vypada to v poradku. Zkus sem jeste postnout definici funkce read_chunk, jen me zajima jak to nacitas - muze byt problem v zarovnani. A po te alokaci zkus aspon Assertem, jestli se poedlo alokovat pamet.

Nahlásit jako SPAM
IP: ...–
21. 4. 2007   #4
-
0
-



// nacte blok
void read_chunk(tChunk *r_chunk)
{
r_chunk->bytesRead = fread(&r_chunk->ID, 1, 2, fr);
r_chunk->bytesRead += fread(&r_chunk->length, 1, 4, fr);
}

Nahlásit jako SPAM
IP: ...–
Jura
~ Anonymní uživatel
637 příspěvků
21. 4. 2007   #5
-
0
-

Takze tohle vypada v poradku taky, ale ted jsem si vsiml, tohoto:


temp_chunk->bytesRead += fread(&version, 1, temp_chunk->length - temp_chunk->bytesRead, fr); // pricte asi 87 bytu


Nepricita to trochu moc? Pkud je uint nekde definovan jako


typedef unsigned int uint;

Tak i na 64bitovem procesoru, to vice jak 8B(64b) byt nemuze. Takze navrhuji to cteni zmenit na:
temp_chunk->bytesRead += fread(&version, 1, sizeof(uint), fr);

Nahlásit jako SPAM
IP: ...–
21. 4. 2007   #6
-
0
-

Haa, mam to! Unsigned in je v rozsahu cca. 0-65000, pritom do "version" se uklada asi "1 024 000" (u modelu z Cinema 4d jen asi "3").. Celou dobu jsem se zameroval na to bytesRead, protoze to zdanlive padalo az pri tom nasledujicim pricitani.. Ale ze me to trvalo den! Dik ;-)

Nahlásit jako SPAM
IP: ...–
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, 45 hostů

Podobná vlákna

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ý