2016-05-23 3 views
0

Например,Есть ли преимущества в использовании size_t вместо unsigned int?

int len1 = strlen (string);

size_t len1 = StrLen (string1)

ли использование size_t никакой разницы в поведении компилятора или коды времени выполнения или разнице в памяти? Я абсолютно знаю о различии, о чем ранее сообщалось в другом потоке, но меня беспокоит поведение ОЗУ.

ответ

1

size_t является неподписанным, тогда как int подписан. Кроме того, на некоторой платформе SIZE_MAX может быть больше sizeof(int). Поэтому для создания переносимого кода вы должны использовать size_t (см. §7.18.3).

Тип данных: size_t

Это беззнаковое целое число, используемое тип для представления размеров объектов. Результатом этого оператора sizeof является такой тип, и такие функции, как malloc (см. Раздел «Без ограничений») и memcpy (см. «Копирование строк и массивов») принимают аргументы этого типа в , указывая размеры объектов. В системах, использующих библиотеку GNU C, это будет unsigned int или unsigned long int.

source

+0

Итак, будет ** разница в памяти ** файла bin, сгенерированного (я столкнулся с ограничениями ram с моим MC)? Спасибо за ответ!! – Chaitanya

2

size_t может хранить максимальный размер массива может получить, так как она в принципе может получить такой большой, как адресуемой памяти.

unsigned int определяется только его минимальным диапазоном (от 0 до 65535), но он может быть больше. Например, вы ожидаете, что он будет 32-битным на 32-битной машине.

Смежные вопросы