|
63 / 62 / 6
Регистрация: 02.09.2008
Сообщений: 181
|
||||||
Дайте ссылку или пример на интересующий меня вопрос.10.02.2011, 13:55. Показов 2314. Ответов 20
Метки нет (Все метки)
0
|
||||||
| 10.02.2011, 13:55 | |
|
Ответы с готовыми решениями:
20
Дайте ссылку на пример unit теста Дайте ссылку на скачивание PyQt-library. Ну или ссылку на сайт (Заранее спасибо)
|
|
бжни
2473 / 1684 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
|
||||||
| 10.02.2011, 14:06 | ||||||
1
|
||||||
|
63 / 62 / 6
Регистрация: 02.09.2008
Сообщений: 181
|
||
| 10.02.2011, 14:15 [ТС] | ||
|
За пример спасибо.
0
|
||
|
бжни
2473 / 1684 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
|
|
| 10.02.2011, 14:27 | |
|
почитайте про утечки памяти
например http://www.cyberguru.ru/progra... -leak.html http://cppworld.h16.ru/stdc/memory.htm http://www.amse.ru/courses/cpp1/2009.10.19.html http://www.intuit.ru/departmen... aldata/27/ здесь надо понимать уровень на котором ведется разговор первоначально важно понимать как правильно работать с указателями, когда можно и нужно их освобождать далее идут вопросы как не нужно работать с указателями, когда не нужно, смарт поинтеры и так далее определитесь с общими понятиями в них даются общие правила работы
1
|
|
|
|
|||||||||||
| 10.02.2011, 14:37 | |||||||||||
|
QWAN, вы писали:
)На словах: указатель - переменная, хранящая в себе адрес какого-то объекта. То, что вы выделили 4 байта под указатель, ещё не значит, что выделили 32 байта под объект (или сколько он там у вас занимает) или 32*8 байт на массив объектов из 8 элементов. Память выделяется динамически - (через "new", освобождается через "delete []" для массивов или "delete" для единичных объектов). Когда вы пишите "char * ptr;" вы создаёте указатель на объект(ы) типа char. Но вам ведь ещё сами объекты создать нужно, верно? "ptr = new char[256];" Когда они вам перестают быть нужны, удалите их: "delete [] ptr;". Так же хорошим тоном считается инициализировать указатели нулём и при удалении объектов, на которые они указывают, так же обнулять их.
0
|
|||||||||||
|
Модератор
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
|
|||||||||||
| 10.02.2011, 14:38 | |||||||||||
|
QWAN, если хотите сохранять в файл массив структур, лучше в структуре поле char *lpBuffer; сделать не указателем, а массивом
0
|
|||||||||||
|
63 / 62 / 6
Регистрация: 02.09.2008
Сообщений: 181
|
||
| 10.02.2011, 15:20 [ТС] | ||
|
Buffer = new FRAGMENT[x]; В принципе программа нормально работала, пока я незахотел с помощю этой функции инициализировать еще один массив. Тогда то я и понял что абсолютно ничего непонимаю и не только с операторами new и delete.
0
|
||
|
|
||||||||||||||||
| 10.02.2011, 15:30 | ||||||||||||||||
|
Да, действительно. Извините. Просто сбивает с толку
1
|
||||||||||||||||
|
63 / 62 / 6
Регистрация: 02.09.2008
Сообщений: 181
|
||||||
| 10.02.2011, 16:09 [ТС] | ||||||
|
Давайте начну сначала, я попробую расказать чего я хочу добиться от своей программы.
Допустим есть консольное приложение с большим буфером экрана (назовем ее плоскостью А). Я создаю дополнительную плоскость тоже большого размера, назовем ее Б. Чтобы скопировать с плоскости Б на плоскость А определенный прямоугольник символов с их атрибуми использую функции ReadConsoleOutput и WriteConsoleOutput. Эти функции имеют ограничение по размеру буффера 64К. Чтобы преодолеть это ограничение я придумал свою структуру FRAGMENT. Массив из структур FRAGMENT тепер есть мой буффер, который может быть ограничен в принципе только размером свободной памяти компютера. Я создаю указатель на мой буфер. Но размера я его еще незнаю. Функция Код C++ 1 FRAGMENT * ReadRectSurface(HANDLE hSurface, SMALL_RECT lpReadRegion, FRAGMENT *pBuffer) должна была вычислить по заданному размеру прямоугольника: 1) количество элементов в массиве. ЕСЛИ оно меньше 64К то всего один элемент; 2) выделить для массива память; 3) если размер прямоугольника больше 64К, я пробую разбить прямоугольник построчно, если и этот размер больше 64К то выдать ошибку (можно былобы и далее дробить но пока этого достаточно). Иначе, выделить память размером в длину строки. На эту память указывает последний указатель в моей структуре.
0
|
||||||
|
63 / 62 / 6
Регистрация: 02.09.2008
Сообщений: 181
|
|
| 10.02.2011, 16:12 [ТС] | |
|
Навсякий случай прикреплю програмку, так будет более понятно. Она работает, только на чсном слове.
0
|
|
|
63 / 62 / 6
Регистрация: 02.09.2008
Сообщений: 181
|
||
| 10.02.2011, 16:15 [ТС] | ||
|
0
|
||
|
63 / 62 / 6
Регистрация: 02.09.2008
Сообщений: 181
|
||
| 10.02.2011, 16:29 [ТС] | ||
|
0
|
||
|
|
|
| 10.02.2011, 17:07 | |
|
Посмотрел я вашу программу. Вам удалось записать прямоугольник в 400 байт. Это действительно немного меньше 64 килобайт
![]() Существенные корректировки пометил как MY_EDIT: в комментарии. Решении проблем с вылетом пометил как SOLUTION: Вообще, пол-программы пришлось перелопатить. Если что - спрашивайте.
1
|
|
|
63 / 62 / 6
Регистрация: 02.09.2008
Сообщений: 181
|
||
| 10.02.2011, 18:36 [ТС] | ||
|
Спасибо, за переделанную програмку. Пока только смотрю что переделали. Вопросы чуть позже напишу, когда более вникну.
Это только для пробы, прямоугольник только ведь 10х10. sizeof (CHAR_INFO) равен 4 байтам, 65536 / 4 = 16384 ячейки cимволов. Если 200*82 = 16400 то уже превышен лимит. У меня раскрывая консольное окно на весь экран (22") получаю разрешение в символьных ячейках 240*95 = 22800, 22800 * 4 = 91200 байт. Добавлено через 36 минут Досмотрел програмку, спасибо большое за исправленные ошибки. Код C++ 1 int lpBufferSize; // MY_EDIT: размер буфера данных Думаю, это лишняя переменная в структуре, она избыточна, достаточно ширины на высоты и sizeof (CHAR_INFO). Вариант с применением глобальной переменной Код C++ 1 int arraySize; мне понравился, удаляется переменная из структуры.
0
|
||
|
|
|||
| 10.02.2011, 18:47 | |||
.Добавлено через 6 минут Попробуйте посмотреть в сторону curses - очень умная библиотека, к тому же кроссплатформенная. Для Windows есть pdcurses.
0
|
|||
|
63 / 62 / 6
Регистрация: 02.09.2008
Сообщений: 181
|
|
| 10.02.2011, 19:01 [ТС] | |
|
Думаю чтобы использовать сторонние библиотеки я еще не дорос (мало знаний и опыта). Программирование для меня просто увлечение. Сейчас пытаюсь сделать простой ASCII редактор с панелью инструментов, окнами и каким-то проигывателем ASCII анимации. Заодно осваиваю и практикуюсь в програмировании. Насчет писать кросплатформенные програмки пока только мечтаю, но библиотеку Curses всеравно посмотрю.
0
|
|
|
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
|
|||||||
| 11.02.2011, 04:11 | |||||||
при сохранении символов в lpBuffer, каким образом программа будет определять, что не произошло переполнение lpBuffer ?
0
|
|||||||
|
63 / 62 / 6
Регистрация: 02.09.2008
Сообщений: 181
|
||||||||
| 11.02.2011, 10:17 [ТС] | ||||||||
0
|
||||||||
| 11.02.2011, 10:17 | |
|
Помогаю со студенческими работами здесь
20
Как создавать xla-файлы? Расскажите, плз, или дайте ссылку! (-) Дайте исходник или полный пример авторизации API контакта Не понимаю алгоритм бинарного поиска, объясните или дайте ссылку на понятный материал вот обычная программа.Как сделать такой же красивый запуск всплывающий и закрытие?пж ссылку или пример)очень п Дайте ссылку Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: реализовать контроль заполнения реквизита табличной части. . .
|
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение:
DISM / Online / Add-Capability / CapabilityName:WMIC~~~~
Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
|
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: при создании документов установить период списания автоматически. . .
|
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2.
Задача: вывести данные из ТЧ нетипового документа. . .
|
|
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению.
На форме документа создается. . .
|
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
|
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
|
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
|