Память для символьных массивов в C выделяется следующим образом:
- Для массивов, объявленных внутри функции, память выделяется в стеке, она существует только в той области, в которой её объявили. 1 Например, если объявить
char foo25;
, то для массива будет выделено 25 байт. 1 - Для глобальных или статических массивов, определённых вне какой-либо функции, память выделяется компилятором либо в сегменте «data», либо в сегменте «bss». 1
Выделяя память, нужно помнить о последнем нулевом символе. 2 Он также входит в массив, так что если длина строки — 10 символов, то нужно создавать массив длиной 11 байт. 2