Если "моя система имеет память, но она разбросана по разным местам (фрагментировано)" означает, что куча виртуальной памяти фрагментирована, а "объявляет символмассив размером 10 " означает, что вы создаете массив символов размером 10 в стеке памяти :
char str[10];
, тогда массив будет успешно создан.
Если "объявить массив символов размером 10" означает, что вы выделяете память с помощью malloc () (allocate in heap):
char *str2;
str2 = (char*) malloc(10 * sizeof(char));
, тогда malloc () вернет NULL.