Титла: Проблеми с sdl Публикувано от: winboze в Aug 21, 2007, 02:44 Ето я ситуацията:
Две абсолютни идентични функции, в два проекта на KDevelop с абсолютно еднакви параметри на компилатора, и двете се компилират успешно. Обаче във втория проект при пускане дава Segmentation fault. Debugвах и излезе, че се дъни на SDL_DisplayFormat(). Проверих с ldd, и двете програми са линкнати за една и съща библиотека на SDL. Ето я и въпросната функция:
Тая фунцкия вече ще ме побърка Някой ако има някаква идея какво става, да казва. Титла: Проблеми с sdl Публикувано от: rpetrov в Aug 21, 2007, 11:47 Вероятно някой (метод/функция) пише където не трябва.
Пускал ли си през "memory debugger" ( http://directory.fsf.org/devel/debug/ ) ? Титла: Проблеми с sdl Публикувано от: muxozavar в Aug 21, 2007, 20:37
Имам някакви съмнения, че char f[] трябва да бъде char *f Титла: Проблеми с sdl Публикувано от: winboze в Aug 21, 2007, 21:57 Шантава работа, стана със съвета на muxozavar. Незнаех, че има разлика.
Титла: Проблеми с sdl Публикувано от: the_real_maniac в Aug 21, 2007, 23:44 хахах е ка да няма ралика бе момче :?
Ок , сериозно, спокойно, горното хаха беше напълно дружелюбно Гледай сега ... указтелят сочи , нали така ОК да кажем сочи адрес памет (не е NULL) , на този адрес да кажем имаме първа клетка текущ адрес ,после нататък са друите все едно ++ ;-) и така: 0x65 | 0x64 | 0x68 | 0x65 | 0x00 т.е ако клетка 1-ва е номер 0x2ff384 от твоята физ. памет на PC-то , то последнат е 0x2ff388 ;-) ок ? Такааа и сега , казваш на твоята програма/компилатор от този адрес чети като стринг , какво прави ? Ми почва 0x65 май беше 'a' латинско и т.н, докато не срещне какво 0x00 -> \0 или нулиране на низа такаа За това на теб ти трябва точно указател ! Указател който да каже на този адрес ПОЧВА един СТРИНГ ! или нещо, което (се опитай) да покажеш като стринг А в твоят вариант какво казваш искам един статичен масив, на КОЙТО ОБАЧЕ ти да определиш сам колко памет/място ти трябва за char-чета , защото аз искам така да ми е по-гъвкаво аз да си сменям съобщението без проблем т.е вместо: char[4]="wow"; // 3ch + \0 ;-) char[3]="ohhhh"; // problem ти казваш: char[] = "wow"; а като решиш да го променяш искаш да е char[] = "ohhhh"; Обаче в твоят случей Е ДРУГО !!!!! онова е за статични декларации + дефиниции в 99% от случеите даже си личи малко , че не знаеш на 100% как стоят нещата за предаване на аргумент и по-точно на масив или масив от данни, да кажем че имаш списък (линеен или нещо си , база данни) ? какво ще правиш :? :-) char mystr[10] = "something"; myfunc(mystr); и прототип на функ : ) void myfunc(char newstr[10]); двойно памет за нищо - е да , може да искаш да запазиш променливата от промени, но 60/40% от случеите искаш обработка така че УКАЗТЕЛ това е успех и се радвам ,че напоследък виждам не просто въпроси за програмиране, ами че хората борят по открито (в БГ) SDL, GTK, kernel-source/hack/modules и т.н хубаво е да има такива теми Айде :-) чао засега. Титла: Проблеми с sdl Публикувано от: rpetrov в Aug 22, 2007, 15:16
По-скоро, вече се инициализира SDL библиотеката и във втория проект, където е ставало бум-бам . |