Переменная пути к каталогу должна закончиться запаздывающей наклонной чертой?

Я услышал два [взаимоисключающих] объяснения, почему у него есть два аргумента:

  1. calloc берет на себя ответственность за проверку переполнения при умножении. Если общий размер запрашиваемого блока слишком велик (например, переполнения size_t), calloc возвращает нулевой указатель для указания сбоя. С malloc вы должны следить за переполнением себя, что многие люди просто забывают сделать. (Хотя история стандартной библиотеки знает примеры реализаций calloc, которые игнорировали переполнение и, следовательно, работали некорректно).

  2. calloc фактически позволяет выделить больше блоков памяти, чем диапазон типа size_t, т. Е. calloc может быть в состоянии выполнить надлежащее не переполнение большого умножения своих аргументов и выделить блок результирующего размера. По этой причине, поскольку calloc использует два аргумента типа size_t, он может выделить больше блоков, чем когда-либо сможет malloc (поскольку malloc принимает только один аргумент типа size_t).

Я всегда считал, что первое объяснение правильное. Тем не менее, после прочтения некоторых постов здесь на SO у меня есть сомнения.

77
задан UnkwnTech 11 June 2009 в 09:51
поделиться

7 ответов

Я не включаю косую черту в конце, когда, например, определяю каталог для хранения файлов. Это потому, что я буду использовать его как

$store_file = "$store_path/$file_id";

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

21
ответ дан 24 November 2019 в 10:55
поделиться

Я использую косую черту в конце, потому что:

  1. «Если она заканчивается косой чертой, это каталог. Если нет, то это файл». это соглашение легко запомнить.

  2. По крайней мере, в операционных системах, которые я обычно использую, удвоение косой черты не вызывает проблем, а пропуск косой черты вызывает большие. Поэтому безопаснее всего поместить косую черту в переменную и использовать «$ path / $ file» при ее использовании.

91
ответ дан 24 November 2019 в 10:55
поделиться

Да, это должно быть так:

Путь + имя файла = полное местоположение файла.

ТАК, косая черта между последним каталогом и именем файла должна быть либо в конце путь или начало имени файла. Добавление к именам файлов префикса / означает, что вам необходимо принять это во внимание, если вы просто хотите открыть файл (то есть если вы предполагаете, что неквалифицированное имя файла находится в текущем рабочем каталоге).

9
ответ дан 24 November 2019 в 10:55
поделиться

Да, существует множество файловых систем, которые поддерживают файлы без каких-либо расширений, поэтому всегда добавляйте косую черту в конце, чтобы избежать каких-либо проблем.

2
ответ дан 24 November 2019 в 10:55
поделиться

Я обычно просто добавляю косую черту в конце, поскольку я, скорее всего, буду использовать этот каталог для добавления / извлечения файлов ...

С точки зрения веб-ссылок, это действительно может повысить производительность оставив косую черту в конце

http://www.netmechanic.com/news/vol4/load_no11.htm

3
ответ дан 24 November 2019 в 10:55
поделиться

Каждый раз, когда я сохраняю пути к каталогам или возвращаю их из API, Я стараюсь придерживаться условного обозначения косой черты в конце. Это позволяет избежать всей двусмысленности "это файл или каталог".

Приложение :
Это не предназначено для замены использования методов, которые допускают либо завершающую косую черту, либо ее отсутствие. Даже используя это соглашение, я всегда использую Path.Combine (...) и подобные методы.

5
ответ дан 24 November 2019 в 10:55
поделиться

Я никогда не видел твердого соглашения в любом случае.

Впрочем, вполне уверен, что что бы вы ни выбрали, кто-то другой будет На 100% уверен, что так и должно быть.

1
ответ дан 24 November 2019 в 10:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: