Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
|
|
« : 17-09-2008 08:44 » |
|
о том, какие вредные бывают неинициализированные переменные (найдено в VC6 ) CString yyy() { DWORD dwd; CString cs cs.Format("%d",dwd); return cs; }
//где то в основной программе ::MessageBox(0,yyy(),"",MB_SYSTEMMODAL); ::MessageBox(0,yyy(),"",MB_SYSTEMMODAL); ::MessageBox(0,yyy(),"",MB_SYSTEMMODAL); ::MessageBox(0,yyy(),"",MB_SYSTEMMODAL); ::MessageBox(0,yyy(),"",MB_SYSTEMMODAL); ::MessageBox(0,yyy(),"",MB_SYSTEMMODAL);
38149500 5175500 5175504 5175508 5175512 5175516 ...(далее добавляется по 4)
при чём чехарда - в релизе (так как в дебаге всегда загружает 0xcccccccc в неинициализированную) замечено, что зависит от списка входных параметров yyy
|
|
« Последнее редактирование: 17-09-2008 08:48 от Алексей1153++ »
|
Записан
|
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
|
|
« Ответ #1 : 17-09-2008 10:07 » |
|
это заговор
|
|
|
Записан
|
|
|
|
Михалыч
|
|
« Ответ #2 : 17-09-2008 10:13 » |
|
Неа... Это сговор
|
|
|
Записан
|
Поживем - увидим... Доживем - узнаем... Выживу - учту
|
|
|
Михалыч
|
|
« Ответ #3 : 17-09-2008 10:33 » |
|
Просто не все... А "подозрительно" упорядоченный сдвиг тогда откуда (особенно если учесть его первоначальное значение в отличие от последующих)?
|
|
|
Записан
|
Поживем - увидим... Доживем - узнаем... Выживу - учту
|
|
|
fly
Гость
|
|
« Ответ #4 : 17-09-2008 10:43 » |
|
Михалыч, Алексей1153++ писАл: ...(далее добавляется по 4) 4 это полбайта. Скорее, это номер полубайта в памяти. При выводе переменной, происходит обратный отсчет от начала сегмента, так кажется, если не ошибаюсь. И если не стоит значения по адресу, то выводится сам "отсчет" от начала сегмента. ИМХО.
|
|
|
Записан
|
|
|
|
McZim
|
|
« Ответ #5 : 17-09-2008 10:50 » |
|
fly, ты хочешь сказать что добавляется по 4-ре бита? )
|
|
|
Записан
|
The CBO without stats is like a morning without coffee. (c) T.Kyte.
|
|
|
fly
Гость
|
|
« Ответ #6 : 17-09-2008 10:57 » |
|
McZim, скорее по 1 полубайту, а даже не пополубайту, а по номеру этого полубайта в системе.
|
|
|
Записан
|
|
|
|
Михалыч
|
|
« Ответ #7 : 17-09-2008 10:58 » |
|
38149500 5175500 Это похоже на переход границы сегмента? Хотя все это не принципиально. Ясно, что там "мусор"... Но уж больно упорядоченный
|
|
|
Записан
|
Поживем - увидим... Доживем - узнаем... Выживу - учту
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
|
|
« Ответ #8 : 17-09-2008 10:59 » |
|
да не, всё проще Локальная переменная, используется стек. А в стеке могло шо угодно быть, а загадочные +4 - кто его знает откуда. Биты тут ни при чём
|
|
|
Записан
|
|
|
|
fly
Гость
|
|
« Ответ #9 : 17-09-2008 11:08 » |
|
Алексей1153++, ну мы примерно то же самое решили.
|
|
|
Записан
|
|
|
|
McZim
|
|
« Ответ #10 : 17-09-2008 11:08 » |
|
fly, какой еще полубайт, ты о чем вообще
|
|
|
Записан
|
The CBO without stats is like a morning without coffee. (c) T.Kyte.
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
|
|
« Ответ #11 : 17-09-2008 11:10 » |
|
fly, не, ты чёта другое решил ))
|
|
|
Записан
|
|
|
|
fly
Гость
|
|
« Ответ #12 : 17-09-2008 11:11 » |
|
McZim, полубайт используется главным образом в микроконтроллерном взаимодействии, а именно при операциях счета. Когда счет идет 8-ми и 16-ти ричными наборами единичек и ноликов. Я ответил на вопрос Алексея1153++ с точки зрения железа
|
|
|
Записан
|
|
|
|
McZim
|
|
« Ответ #13 : 17-09-2008 11:12 » |
|
fly, ) совершенно не ответил.
|
|
|
Записан
|
The CBO without stats is like a morning without coffee. (c) T.Kyte.
|
|
|
fly
Гость
|
|
« Ответ #14 : 17-09-2008 11:17 » |
|
McZim, а как тогда будет с точки зрения железа?
|
|
|
Записан
|
|
|
|
McZim
|
|
« Ответ #15 : 17-09-2008 11:24 » |
|
fly, а ты сделай подобный пример на своей машине и посмотри
|
|
|
Записан
|
The CBO without stats is like a morning without coffee. (c) T.Kyte.
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
|
|
« Ответ #16 : 17-09-2008 11:25 » |
|
fly, начнём с того, что это был не вопрос. А кончим тем, что ты хрень какую то ответил )) У тебя не железо, а фиг знает что...
|
|
|
Записан
|
|
|
|
fly
Гость
|
|
« Ответ #17 : 17-09-2008 11:34 » |
|
McZim, я серьезно. Алексей1153++, вы просто не разобрались. Я правильно ответил.
|
|
|
Записан
|
|
|
|
McZim
|
|
« Ответ #18 : 17-09-2008 11:35 » |
|
fly, тут дело в компиляторе, а не в железе.
|
|
|
Записан
|
The CBO without stats is like a morning without coffee. (c) T.Kyte.
|
|
|
McZim
|
|
« Ответ #19 : 17-09-2008 11:37 » |
|
fly, напиши на чистом СИ или СИ++ программу выложи ее сюда, я ее скомпилирую в своей среде с компилятором gcc и покажу результат, а ты скомпилируй ее в своей среде со своим компилятором и покажи результат.
|
|
|
Записан
|
The CBO without stats is like a morning without coffee. (c) T.Kyte.
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
|
|
« Ответ #20 : 17-09-2008 11:40 » |
|
fly, уверен, что я правильно разобрался А железо тут и ни при чём, мало ли что там в стеке побывало
|
|
|
Записан
|
|
|
|
Sla
|
|
« Ответ #21 : 17-09-2008 11:41 » |
|
счет идет 8-ми и 16-ти ричными наборами единичек и ноликов.
Это надо в какой-нибудь "цицатник"
|
|
|
Записан
|
Мы все учились понемногу... Чему-нибудь и как-нибудь.
|
|
|
McZim
|
|
« Ответ #22 : 17-09-2008 11:42 » |
|
Алексей1153++, для сравнения, не зависимо от платформы, такой код проканает? Поправь пожалуйста, если не так понял. #include <stdio.h> #include <iostream>
std::string yyy();
int main() { for(int i=0; i<10; i++) { std::string str; str = yyy();
std::cout << str << std::endl; } return 0; }
std::string yyy() { int dwd; std::string cs; printf("%d",dwd); return cs; }
|
|
« Последнее редактирование: 17-09-2008 11:46 от McZim »
|
Записан
|
The CBO without stats is like a morning without coffee. (c) T.Kyte.
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
|
|
« Ответ #23 : 17-09-2008 11:44 » |
|
cout у меня не находится
|
|
|
Записан
|
|
|
|
McZim
|
|
« Ответ #24 : 17-09-2008 11:45 » |
|
Алексей1153++, моя ошибка.
std::count и std::endl
|
|
|
Записан
|
The CBO without stats is like a morning without coffee. (c) T.Kyte.
|
|
|
fly
Гость
|
|
« Ответ #25 : 17-09-2008 11:46 » |
|
McZim, у меня нет щас под рукой 4-ого Buildera. Позже. А железо тут и ни при чём, мало ли что там в стеке побывало Я обычно когда пишу прогу, всегда принимаю во внимание и железо тоже. Так легче. Sla, не надо меня ни в какой цицатник помещать.
|
|
|
Записан
|
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
|
|
« Ответ #26 : 17-09-2008 11:47 » |
|
error C2679: binary '<<' : no operator defined which takes a right-hand operand of type 'class std::basic_string<char,struct std::char_traits<char>,class std::allo cator<char> >' (or there is no acceptable conversion)
|
|
|
Записан
|
|
|
|
McZim
|
|
« Ответ #27 : 17-09-2008 11:49 » |
|
fly, допустим я пишу программу которая работает с БД и строками, что на твой взгляд я должен учесть с точки зрения железа?
|
|
|
Записан
|
The CBO without stats is like a morning without coffee. (c) T.Kyte.
|
|
|
fly
Гость
|
|
« Ответ #28 : 17-09-2008 11:52 » |
|
McZim, да ты прав, что сейчас при программировании можно железо не учитывать. Но я ведь про себя говорю, мне удобнее, еще и железо подключать в мысленную модель, при написании программы, особенно если прога системная.
|
|
|
Записан
|
|
|
|
McZim
|
|
« Ответ #29 : 17-09-2008 11:53 » |
|
Алексей1153++, какой метод тебе доступен для вывода в командную строку значений?
|
|
|
Записан
|
The CBO without stats is like a morning without coffee. (c) T.Kyte.
|
|
|
|