В другом посте я задал вопрос о кодировании, и в исходном коде этого вопроса я объявил некоторые переменные следующим образом:
char datablock[200];
char *pointer1=datablock;
char *pointer2=datablock+100;
Однако кто-то упомянул, что код может быть несовместим с 64-битными системами, потому что 100 не делится на 8? Я не могу вспомнить, что это было.
Но что я хочу сделать, так это зарезервировать огромный кусок памяти для использования с моей программой и заставить ее выполняться как можно быстрее, и я помню, из-за того, как работает системная кэширующая память, что использование данных из одного и того же блока памяти быстрее, чем используя данные из отдельных блоков. использование malloc также требует более медленной памяти.
Итак, в коде это пример того, что я хочу сделать. Я хочу выделить 40 000 байт и дать 4 указателям доступ по 10 000 байт каждый:
char data[40000];
char *string0=data;
char *string1=data+10000;
char *string2=data+20000;
char *string3=data+30000;
Однако это не то, что я хочу сделать, поскольку я считаю, что будут доступны разные разделы памяти:
char string0[10000];
char string1[10000];
char string2[10000];
char string3[10000];
Я считаю, что моя идея верна, но единственное, о чем мне нужно беспокоиться, это то, что для 64-битных систем значение смещения кратно 8, а для 32-битных систем значение смещения кратно 4?
Я не хочу выбирать неправильные номера и получать ошибки сегментации.
char
. Например, у вас могут возникнуть проблемы, если вы поместите в эту памятьint
илиdouble
элементов. - person user3386109   schedule 31.08.2015