Форум программистов, компьютерный форум CyberForum.ru

Потоки и выделение памяти в куче - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Не могу найти ошибку в исходнике. http://www.cyberforum.ru/cpp-beginners/thread503146.html
Привет програмёры.Я учусь програмировать на С++ и для закрепления начала изучения функций и массивов написал небольшую програмку massiv, и она компилируется, но работает неправильно(после ввода чисел работа почемуто обрывается.Не могу найти ошибку.Вот текст програмки: #include<cstdio> #include<cstdlib> #include<iostream> using namespace std; int Proizved(int mass, int velechina);
C++ _tsetlocale(LC_CTYPE, _T("rus_rus")) CString cfn; ... cfn.Left(3).CompareNoCase(L"ИЗМ") == 0 Почему это условие не выполняется при cfn равное, например, "изм5"? Пробовал также перед условием писать следующее: cfn.MakeUpper(); не помогло. http://www.cyberforum.ru/cpp-beginners/thread503108.html
Как получить все папки и файлы хранящиеся на диске? C++
Здравствуйте! Помогите пожалуйста в написании кода, с помошью которого можно получить все папки и файлы хранящиеся на диске D: С уважением!
GDI+: Вывод искривленного по дуге текста C++
Приветствую, All Подскажите плз, как можно сделать в GDI+ вывод искривленного по дуге текста, чтобы буквы были пропорционально растянуты, что то вроде эффекта Arc Text в Photoshop?
C++ Программа к 8 марту http://www.cyberforum.ru/cpp-beginners/thread502901.html
#include <zvety.h> #include <vino.h> #include <mans.h> #define QPIVO 3 #define QZVETY 5 // The one and only CWoman object CWoman woman;
C++ Исключение при вызове iterator destruction Здравствуйте. Помогите пожалуйста. Вот фрагмент кода: try { if(!m_vDataItems.empty()) { int nItemsCount = m_vDataItems.size(); for(int i=0; i < nItemsCount; i++) { _variant_t vtValues; vtValues = (long)m_vDataItems.nID; vtValues = (long)m_vDataItems.nParentID; подробнее

Показать сообщение отдельно
arist
0 / 0 / 0
Регистрация: 14.02.2011
Сообщений: 100
30.05.2012, 12:38  [ТС]     Потоки и выделение памяти в куче
Вот одна из функций (вызывается в других потоках, не в главном):
C++
1
2
3
4
5
6
7
void AppendEdit(CEdit *log, const TCHAR *s){
    TCHAR *text = new TCHAR[log->GetWindowTextLength()+_tcslen(s) + 1];
    log->GetWindowText(text, log->GetWindowTextLength());
    _tcscat(text, s);
    log->SetWindowText(text);
    delete text;
}
Вот сам поток:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
DWORD WINAPI MyThread(LPVOID lpMyStruct){
    static int count = 0;
    int current(++count);
    CMyStruct *ms = (CMyStruct *)lpMyStruct; //в ms хранится указатель на EditBox диалога созданного главным потоком
 
    TCHAR str[1000];
 
    _stprintf(str, _T("
Thread %i: started."), current);
    AppendEdit(ms->log, str);
 
    CThreadDialog dlg;
    if(-1 == dlg.DoModal()){
        _stprintf(str, _T("
Thread %i: Can't create dialog. %s Exit thread."), current, GetLastErrorString());
        AppendEdit(ms->log, str);
        goto end;
    }
    _stprintf(str, _T("
Thread %i: Message: %s"), current, dlg.m_text);
    AppendEdit(ms->log, str);
 
end:
    _stprintf(str, _T("
Thread %i: exit."), current);
    AppendEdit(ms->log, str);
    delete ms;
    return 0;
}
Исключение происходит где-то после DoModal(), но перед _stprintf()...
Output:
ERROR: Critical memory allocation from safety pool failed!
First-chance exception at 0x7c81eb33 in ThreadTest.exe: Microsoft C++ exception: CMemoryException @ 0x00f0f488.
Unhandled exception at 0x7c81eb33 in ThreadTest.exe: Microsoft C++ exception: CMemoryException @ 0x00f0f488.
и т.п.

Исключение в atltrace.h:
C++
1
2
3
4
5
    void __cdecl TraceV(const char *pszFileName, int nLine,
        DWORD_PTR dwCategory, UINT nLevel, LPCSTR pszFmt, va_list args) const
    {
        AtlTraceVA(m_dwModule, pszFileName, nLine, dwCategory, nLevel, pszFmt, args);
    }
 
Текущее время: 14:36. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru