В некоторых случаях при динамической аллокации памяти malloc выдает 0.
Расследование показало, что это происходит сразу после аллокации памяти вблизи
границы 128M виртуального адресного пространства.
Мне удалось написать программу из 2ух строк, где это наблюдается:
#include <fcntl.h>
#include <sys/mman.h>
// здесь используется мапирование файла ttt в память, но это не критично,
// критичным является hint адреса 0x804A000
printf("%d\n", mmap((void*)(0x804A000),1000,0,MAP_SHARED,open("tt",O_RDWR),0));
printf("%d\n", malloc(10000)); // malloc здесь возвращает 0, а должен бы память...
Есть ли у кого-нибудь соображения на этот счет?
У меня 2 Linux-машины (железо почти одинаковое, Celeron на Asus KN97, RAM 64M и 192M)
1. RH BC Linux 6.2 + gcc 2.95.2
2. RH BC Linux 6.0? + gcc 2.91.66
Работает ли это на других конфигурациях Linux?
Заранее спасибо,
Вадим
Ответ на:
комментарий
от sacha
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум Утилита для изменения аптайма (2008)
- Форум IPC не компилируется (2006)
- Форум memory mapped файл (2014)
- Форум Анализ, компиляция и прогон программы для создания memory mapped файла и записи его содержимого (2014)
- Форум Фреймбуфер возвращает неправильное разрешение экрана (2016)
- Форум компилятор дает ошибку undefined reference (2015)
- Форум Не работает чтение с web-камеры (v4l2) (2024)
- Форум GTK, memory management (2008)
- Форум V4L2: ошибка удаления буфера из очереди: недопустимый аргумент (2023)
- Форум Ошибка Memory Error (2022)