> При всем уважении, don't be a smart ass, OK? Неужели Вы
> думаете, что я по каждому вопросу буду бегать в
> Привет.
Однако у меня возникло такое впечатление, несмотря на то что дело дошло до задниц...
> Я перепробовал все параметры которые только
> можно..
По моему подход неверен. Попробуйте сделать то же самое в пустом проекте, как упоминал
KVA
> из Вашего же примера..
Моего???
Я вроде не приводил ни единого примера
> char *str = "9";
> int x = atoi(str); // говорят будет работать
uniqueman, "будет работать" - понятие условное. Если смешать пополам бензин с соляркой, то некоторые карбюраторные автомобили тоже могут работать, хотя чад будет еще тот
Если вовсю баловаться кастингом, не вникая в детали, то то и стандартные функции могут не работать. Часто первые признаки - Debug версия работает, а Release - падает.
Наиболее часто такие вещи происходят, когда переменные "наезжают" друг на друга.
У нас ребята 3 месяца ловили проблему с крушением DLL'a в Release, когда в Debug все вроде работало (если пробовать меньше 5-ти раз
![Mr. Green :mrgreen:](./images/smilies/icon_mrgreen.gif)
) А проблема оказалась в том, что в DLL функцию объявили как
int WINAPI func(void *);
а потом пользовали указатель как на:
int WINAPI func(void);
В результате возникал "перекос" стека.
Или, скажем, популярная проблема, объявили
char str[4];
int i;
а потом загоняете в
str что нить типа строки
"stop" длиной в 4 символа. и инициализируете
i = 25;
Если компилятор последовательно распределит память под
str а потом под
i, то строка
"stop" частично "наедет" на переменную
i. Ну а когда Вы проинициализируете
i, то, по сути дела, убьете
'\0' на конце строки
"stop". Ну и ессно потом любая строковая операция с
str вызовет непредсказуемые результаты.
Это наиболее типичные примеры возникновения подобных проблем. Действительность может быть намного хуже
> В моем примере,
> const char* sTemp = "9";
> int i = atoi (sTemp);
> приводит к крашу.
А попробуйте поставить для прикола пару буферов вокруг, типа:
const char buf1[512] = {'\0'};
const char* sTemp = "9";
const char buf2[512] = {'\0'};
int i = atoi (sTemp);
Если крэша не будет, то очень похоже на "наезд" переменных или перекос стека.