что здесь происходит, кроме «Ошибка нарушения прав чтения»?
мое предположение:
size_t *size = (size_t*)sizeof(int);
^^^^^^ 1
------^^^^^ 2
^^^^^^^^^ 3
// 1) sizeof() returns byte count in an unsigned integral type
// 2) sizeof(int) is 4 or 8 depending on compiler and target system
// For diagnostic, I added:
fprintf(stdout, "\n lu int size: %lu\n", sizeof(int));
// on my lubuntu 18.04 desktop, this line reports: " lu int size: 4"
// 3) (size_t*) is a c-style cast of the value of sizeof(int)
// fprintf(stdout, "\n size is: %zu\n", *size);
// g++ reports format ‘%zu’ expects argument of type ‘size_t’
//
// Running your printf on my lubuntu gives a "3403 Segmentation fault"
// with core dump.
Резюме: я думаю, чтопроисходит »означает, что вы пытаетесь получить доступ к адресу 0x00000008 в своей системе, что, по-видимому, запрещено.
Разрешает ли ваша система (компилятор / os / hw) доступ к адресу 0x00000008?Многие встраиваемые системы этого не делают.
Это действительно то, что вы хотите сделать?(то есть читать int по адресу (возможно, 0x00000008), полученному из размера int)
Эксперимент:
Вы можете попытаться прочитать этот адрес, используя другой метод ...Int?байт?обугливается?access
Возможная основная причина:
Возможно, вашей ОС требуются специальные привилегии для доступа к процессам / задачам.
Возможно, у вашего HW нет памяти в этом месте