12 / 11 / 2
Регистрация: 03.04.2016
Сообщений: 502
|
|||||||||||
1 | |||||||||||
Аллокатор malloc, как избавиться от CRT23.01.2018, 22:50. Показов 1591. Ответов 9
Метки нет (Все метки)
Вот рабочий код
0
|
23.01.2018, 22:50 | |
Ответы с готовыми решениями:
9
Как написать пуловый аллокатор для работы с объектами В чем разница между malloc() и (char *)malloc() Пишем аллокатор Быстрый аллокатор |
322 / 174 / 78
Регистрация: 09.10.2014
Сообщений: 809
|
|
24.01.2018, 02:20 | 2 |
0
|
12 / 11 / 2
Регистрация: 03.04.2016
Сообщений: 502
|
|
24.01.2018, 10:18 [ТС] | 3 |
0
|
3881 / 2479 / 418
Регистрация: 09.09.2017
Сообщений: 10,888
|
|
24.01.2018, 11:06 | 4 |
о том что вы запрашиваете всего 4 байта памяти, а читаете, вероятно, больше
0
|
138 / 138 / 53
Регистрация: 14.06.2016
Сообщений: 467
|
|
24.01.2018, 11:55 | 5 |
GetLastError() знает.
запрашивает то 4 байта, а получит 4 килобайта. Но возможно даже этого мало, да. Но это всё гадание на кофейной гуще, надо же код ошибки смотреть.
0
|
3881 / 2479 / 418
Регистрация: 09.09.2017
Сообщений: 10,888
|
|
24.01.2018, 12:10 | 6 |
Запрашивает в смысле у ОС под хранение данных. Извиняюсь если недостаточно однозначно сформулировал.
Сколько ОС выделит действительно неизвестно, но рассчитывать надо на то что если функция отработала успешно (кстати, это почему-то не проверяется), то выделено именно 4 байта. А размер файла мы не знаем, но вряд ли там всего 4 байта.
0
|
138 / 138 / 53
Регистрация: 14.06.2016
Сообщений: 467
|
|
24.01.2018, 12:17 | 7 |
VirtualAlloc выделяет постранично, поэтому всё таки не 4
бывают же нетривиальные задачи, у меня один раз такая была. но врядли у автора что то подобное.
0
|
12 / 11 / 2
Регистрация: 03.04.2016
Сообщений: 502
|
||||||
24.01.2018, 18:52 [ТС] | 8 | |||||
Я просто сократил код до максимума.
Насколько я понял в описании данной функции если запрашиваемый размер больше одной странички, то просто выделится больше страниц памяти. VirtualAlloc более гибкая и имеет больше возможностей по сравнению с malloc.
0
|
138 / 138 / 53
Регистрация: 14.06.2016
Сообщений: 467
|
||||||
24.01.2018, 18:56 | 9 | |||||
Сообщение было отмечено zombivadim как решение
Решение
Ну всё верно. Где то в ядре происходит исключение при записи в буффер который ты указал, потому что его размер слишком мал, и происходит запись за его границы.
А всё от того, что должно быть так.
1
|
12 / 11 / 2
Регистрация: 03.04.2016
Сообщений: 502
|
|
24.01.2018, 19:37 [ТС] | 10 |
jr_, Спасибо! Я настолько привык везде использовать sizeof, что записал его по инерции.
0
|
24.01.2018, 19:37 | |
24.01.2018, 19:37 | |
Помогаю со студенческими работами здесь
10
Аллокатор в chrome Пародия на стековый аллокатор Аллокатор памяти общего назначения Задача с собеседования (аллокатор памяти) Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |