Титла: Проблеми с 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 т.е ![]() ![]() ок ![]() Такааа и сега , казваш на твоята програма/компилатор от този адрес чети като стринг , какво прави ![]() ![]() Ми почва 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 библиотеката и във втория проект, където е ставало бум-бам ![]() |