| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Системное программирование и WinAPI > CreateThread |
| Автор: maksar 17.3.2006, 18:32 |
| Как в поток передать параметр типа int. |
| Автор: _hunter 17.3.2006, 18:41 |
| передай его четвертым параметром... |
| Автор: maksar 18.3.2006, 04:35 |
| Вот меня именно это и интересует, как приобразовывать войд * к инт. |
| Автор: alkorax 18.3.2006, 04:52 | ||
Приписать & ?
|
| Автор: maksar 18.3.2006, 05:55 | ||
((, ну я не про это((
Как внутри thread получить число? |
| Автор: alkorax 18.3.2006, 06:04 | ||
param - указатель, iPortl - int. Попробуй так:
|
| Автор: maksar 18.3.2006, 09:56 |
| пишет error C2100: illegal indirection |
| Автор: adonin 18.3.2006, 11:10 | ||
| Просто нельзя разадресовать пустой указатель: компилятор не знает на какой тип данных он указывает. Делайте так:
|
| Автор: maksar 18.3.2006, 11:42 |
| Компилится , но корректно не работает. в функцию shell передается число 3434 в thread int iPortl = *((int *)param); iPort равно 2090069332, ни как не 3434. |
| Автор: adonin 18.3.2006, 12:02 | ||
| В функции shell(int iPort) iPort - параметр функции. Компилятор выделяет под неё место в стеке. После выхода из функции стек освобождается и может быть затёрт (а может и не быть - не определённое поведение) другими функциями. Вы передаёте указатель на область стека и не можете гарантировать сохранность данных в этой области памяти т.к. Shell завершается сразу после CreateThread. Передавать нужно значение, а не адрес переменной:
Так должно работать. |
| Автор: maksar 18.3.2006, 15:46 |
| Всем спасибо, работает. |