Вообще выделение памяти проверять.А вот потому что:#include <stdio.h>
int main()
{
unsigned char *a = NULL;
int b = 0;
unsigned long n = (unsigned long)&b;
printf("b = %d, n = %lu\n",b,n);
a[n]=1;
printf("b = %d\n",b);
return 0;
}
Запуск$ gcc nullptr.c -o nullptr
$ ./nullptr
b = 0, n = 140731726099148
b = 1
Запускалось в 64-битном (x86_64) Linux. Как видно, никаких сегфолтов и прочих ошибок. Конечно, адрес в районе 127 Тб в примере далеко за пределами доступного почти на всех компьютерах, но нет никаких гарантий, что на какой-то системе с каким-то компилятором и настройками среды значение не окажется более доступным. Могут быть и другие архитектуры (32-битные например), если запускать от root'а, то в начало может быть разрешена запись и там иметься память процесса. Или ещё какие-то варианты. shdown, monk, liksys, Xenius - я думаю вам понравится. Пример сочинился по ходу чтения обсуждения Вышло издание 2,92 книги «Программирование: введение в профессию» А. В. Столярова (комментарий)
c, malloc, безопасность
| # | Наименование новости | Тональность | Информативность | Дата публикации |
|---|---|---|---|---|
| 1 | segv при элементарном обходе массива | 0 | 0 | 23-06-2026 |
| 2 | В FreeBSD тоже zerocopy-баг с записью в файлы которые нельзя записывать | 0 | 0 | 20-06-2026 |
| 3 | fz – сборка ассемблера и C без make/cmake, одна команда, парал | 0 | 0 | 18-05-2026 |
| 4 | Два винта, две системы: пропробсить новую в старую | 0 | 0 | 21-06-2026 |
| 5 | Linux 7.2 内核完全移除 strncpy 函数 | 0 | 0 | 22-06-2026 |
| 6 | wget, curl - не получается скачать файл с пробелами в имени | 0 | 0 | 01-06-2026 |
| 7 | Ищу работу (десктоп / бэкенд, опенсорс приветствуется) | 0 | 0 | 21-06-2026 |
| 8 | Странности с nvme Transcend TS2TMTE220S | 0 | 0 | 21-06-2026 |
| 9 | домашний сервер без движущихся частей | 0 | 0 | 21-06-2026 |
| 10 | Поиск всех путей на графе (Небольшой тест. Часть 2) | 0 | 0 | 20-06-2026 |