информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Spanning Tree Protocol: недокументированное применениеСтрашный баг в WindowsВсе любят мед
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 ФБР нашла русский след в атаках... 
 Массовый взлом SharePoint 
 Microsoft Authenticator прекращает... 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
Либо я что то не понимаю, либо одно из двух 18.10.01 10:18  Число просмотров: 988
Автор: PS <PS> Статус: Elderman
<"чистая" ссылка>
> dlia static lib: Potomu chto heap v kazdoii dl(exe)l svoi i
> kogda ty allociroval v exe(dll) a dealociruesh v drugoi
> dll, to pointer ne mozhet byt` dealocirovan v drugoi heap,
> i vse padaet.
> a kogda v mfc dll to memory allociruetsia na heape mfc.dll
> (ili c-runtime dll) i dealociruetsia tam zhe i vse ok.
> I uzhe pro eto pisal i dazhe primer vylozhil.

Статические библиотеки присоеденяются полностью к твоему exe'шнику, увеличивая его на свой размер. Никаких DLL при этом вызыватся не должно. ВЕСЬ код находится в твоем процессе.
Во вторых никаких new я не делал. Все переменые были статическими, поэтому о хипе говорить нельзя.
По этим двум причинам я не могу принять твое объяснение.
<programming>
Неожиданность с MFC 17.10.01 10:44  
Автор: PS <PS> Статус: Elderman
<"чистая" ссылка>
Итак приложение построенно как dialog based.
Конструктор:
CIViewDlg* mainDlg;

CIViewDlg::CIViewDlg(CWnd* pParent =NULL)
: CDialog(CIViewDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CIViewDlg)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);

server = Server::CreateTh( );
mainDlg = this;
}

Есть ф-я:
void CIViewDlg::OnSetserver()
{
server->CreateThread( CREATE_SUSPENDED );
server->ResumeThread( );
}


Есть класс Server от CWinThread. Есть статическая ф-я:
Server* Server::CreateTh( )
{
return new Server;
}

В Run Server'а такой код:
CSocket sock;
CSocket sock2;

CString address;
mainDlg->GetDlgItemText( IDC_EDIT1, address );

mainDlg->SetDlgItemText( IDC_EDIT4, "Binding..." );
if( sock.Create( 80, SOCK_STREAM, address ) == FALSE )
{
return 0;
}

ПАДАЕТ ПО ПАМЯТИ НА sock.Create ! В Kernel

Итак, в главном thread завожу объект потока. Запускаю поток. В Run потока есть локальная переменая сокета. При вызове Create для сокета все падает.
Что бы это значало ?

P.S. В debug все работает. В release - нет.
Все исправилось 17.10.01 11:27  
Автор: PS <PS> Статус: Elderman
<"чистая" ссылка>
Стоило только в настройках проекта поменять Use MFC in a static library на Use MFC in a Shared DLL.
Хотя не понятно, что это за дескременация статических библиотек...
Bce prosto 17.10.01 22:35  
Автор: + <Mikhail> Статус: Elderman
<"чистая" ссылка>
> Стоило только в настройках проекта поменять Use MFC in a
> static library на Use MFC in a Shared DLL.
> Хотя не понятно, что это за дескременация статических
> библиотек...

dlia static lib: Potomu chto heap v kazdoii dl(exe)l svoi i kogda ty allociroval v exe(dll) a dealociruesh v drugoi dll, to pointer ne mozhet byt` dealocirovan v drugoi heap, i vse padaet.
a kogda v mfc dll to memory allociruetsia na heape mfc.dll (ili c-runtime dll) i dealociruetsia tam zhe i vse ok.
I uzhe pro eto pisal i dazhe primer vylozhil.
Либо я что то не понимаю, либо одно из двух 18.10.01 10:18  
Автор: PS <PS> Статус: Elderman
<"чистая" ссылка>
> dlia static lib: Potomu chto heap v kazdoii dl(exe)l svoi i
> kogda ty allociroval v exe(dll) a dealociruesh v drugoi
> dll, to pointer ne mozhet byt` dealocirovan v drugoi heap,
> i vse padaet.
> a kogda v mfc dll to memory allociruetsia na heape mfc.dll
> (ili c-runtime dll) i dealociruetsia tam zhe i vse ok.
> I uzhe pro eto pisal i dazhe primer vylozhil.

Статические библиотеки присоеденяются полностью к твоему exe'шнику, увеличивая его на свой размер. Никаких DLL при этом вызыватся не должно. ВЕСЬ код находится в твоем процессе.
Во вторых никаких new я не делал. Все переменые были статическими, поэтому о хипе говорить нельзя.
По этим двум причинам я не могу принять твое объяснение.
Nu, Nu. :-) 18.10.01 20:18  
Автор: + <Mikhail> Статус: Elderman
<"чистая" ссылка>
Tvoi analis ochen vpechetliaet (v terminah zaputalsia, sam sebe protivorechish). I tebia verit ne zastavliau. I obiasnil prichinu, esli hochesh oprovergnut` to snachala prover` na praktike, a potom vse somnenia otpadut, Enshtein ty nash. :-)

> > dlia static lib: Potomu chto heap v kazdoii dl(exe)l
> svoi i
> > kogda ty allociroval v exe(dll) a dealociruesh v
> drugoi
> > dll, to pointer ne mozhet byt` dealocirovan v drugoi
> heap,
> > i vse padaet.
> > a kogda v mfc dll to memory allociruetsia na heape
> mfc.dll
> > (ili c-runtime dll) i dealociruetsia tam zhe i vse
> ok.
> > I uzhe pro eto pisal i dazhe primer vylozhil.
>
> Статические библиотеки присоеденяются полностью к твоему
> exe'шнику, увеличивая его на свой размер. Никаких DLL при
> этом вызыватся не должно. ВЕСЬ код находится в твоем
> процессе.
> Во вторых никаких new я не делал. Все переменые были
> статическими, поэтому о хипе говорить нельзя.
> По этим двум причинам я не могу принять твое объяснение.
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2025 Dmitry Leonov   Page build time: 1 s   Design: Vadim Derkach