Я услышал два [взаимоисключающих] объяснения, почему у него есть два аргумента:
calloc
берет на себя ответственность за проверку переполнения при умножении. Если общий размер запрашиваемого блока слишком велик (например, переполнения size_t
), calloc
возвращает нулевой указатель для указания сбоя. С malloc
вы должны следить за переполнением себя, что многие люди просто забывают сделать. (Хотя история стандартной библиотеки знает примеры реализаций calloc
, которые игнорировали переполнение и, следовательно, работали некорректно).
calloc
фактически позволяет выделить больше блоков памяти, чем диапазон типа size_t
, т. Е. calloc
может быть в состоянии выполнить надлежащее не переполнение большого умножения своих аргументов и выделить блок результирующего размера. По этой причине, поскольку calloc
использует два аргумента типа size_t
, он может выделить больше блоков, чем когда-либо сможет malloc
(поскольку malloc
принимает только один аргумент типа size_t
).
Я всегда считал, что первое объяснение правильное. Тем не менее, после прочтения некоторых постов здесь на SO у меня есть сомнения.
Я не включаю косую черту в конце, когда, например, определяю каталог для хранения файлов. Это потому, что я буду использовать его как
$store_file = "$store_path/$file_id";
, я всегда буду добавлять косую черту в конце перед использованием переменной, которая должна содержать путь к каталогу. Я думаю, что лучше всегда добавлять один, чем задаваться вопросом, включен ли в конец косая черта.
Я использую косую черту в конце, потому что:
«Если она заканчивается косой чертой, это каталог. Если нет, то это файл». это соглашение легко запомнить.
По крайней мере, в операционных системах, которые я обычно использую, удвоение косой черты не вызывает проблем, а пропуск косой черты вызывает большие. Поэтому безопаснее всего поместить косую черту в переменную и использовать «$ path / $ file» при ее использовании.
Да, это должно быть так:
Путь + имя файла = полное местоположение файла.
ТАК, косая черта между последним каталогом и именем файла должна быть либо в конце путь или начало имени файла. Добавление к именам файлов префикса / означает, что вам необходимо принять это во внимание, если вы просто хотите открыть файл (то есть если вы предполагаете, что неквалифицированное имя файла находится в текущем рабочем каталоге).
Да, существует множество файловых систем, которые поддерживают файлы без каких-либо расширений, поэтому всегда добавляйте косую черту в конце, чтобы избежать каких-либо проблем.
Я обычно просто добавляю косую черту в конце, поскольку я, скорее всего, буду использовать этот каталог для добавления / извлечения файлов ...
С точки зрения веб-ссылок, это действительно может повысить производительность оставив косую черту в конце
Каждый раз, когда я сохраняю пути к каталогам или возвращаю их из API, Я стараюсь придерживаться условного обозначения косой черты в конце. Это позволяет избежать всей двусмысленности "это файл или каталог".
Приложение :
Это не предназначено для замены использования методов, которые допускают либо завершающую косую черту, либо ее отсутствие. Даже используя это соглашение, я всегда использую Path.Combine (...)
и подобные методы.
Я никогда не видел твердого соглашения в любом случае.
Впрочем, вполне уверен, что что бы вы ни выбрали, кто-то другой будет На 100% уверен, что так и должно быть.