• XSS.stack #1 – первый литературный журнал от юзеров форума

Поддержка длинных путей

html5

CD-диск
Пользователь
Регистрация
11.08.2020
Сообщения
19
Реакции
1
Здравствуйте. Возник вопрос по выделению памяти на стеке под пути. В Windows 10, начиная с версии 1607 можно включить поддержку длинных путей по дефолту, следовательно ограничение в MAX_PATH символов теряет смысл. Как универсально поддерживать длинные пути? Выделять в стеке 32767 символов под каждый путь глупо, как и постоянно выделять память динамически.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Ну вряд ли у тебя будет много путей длиннее MAX_PATH (на секундочку это 260 символов). В противном случае лучшего решения, чем выделять память для путей на куче, ты вряд ли найдешь. Выделять 32 килобайта на стеке для каждого пути - никакого стека не хватит.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Ну можно еще буфер данных заранее объвить, будет в секции .
Ну тут надо не забывать про многопоточность, если она есть, чтобы не огрести рейскондишн между потоками.
 
Ну вряд ли у тебя будет много путей длиннее MAX_PATH (на секундочку это 260 символов). В противном случае лучшего решения, чем выделять память для путей на куче, ты вряд ли найдешь. Выделять 32 килобайта на стеке для каждого пути - никакого стека не хватит.
Мне нужно сформировать путь к файлу, имя которого = GetEnvironmentVariable(APPDATA)\\randomname(7)
У человека может быть банально очень большое имя пользователя (200+ символов) и путь не влезет в буффер
Сколько разных сорцов не пересмотрел, везде сугубо MAX_PATH и никакого беспокойства о переполнении. Разве, не всё так страшно с длинными путями?
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Мне нужно сформировать путь к файлу, имя которого = GetEnvironmentVariable(APPDATA)\\randomname(7)
У человека может быть банально очень большое имя пользователя (200+ символов) и путь не влезет в буффер
Сколько разных сорцов не пересмотрел, везде сугубо MAX_PATH и никакого беспокойства о переполнении. Разве, не всё так страшно с длинными путями?
вообще не страшно. Поверь.
Страшно тут, что масс проекты к путям используют анси и у них не отрабатывается в некоторых странах
А вообще имя юзера сток символов в теории не может иметь. Значит с машиной что-то не так
 
вообще не страшно. Поверь.
Страшно тут, что масс проекты к путям используют анси и у них не отрабатывается в некоторых странах
А вообще имя юзера сток символов в теории не может иметь. Значит с машиной что-то не так
Может. Максимальный размер - 256 символов.
Пруф: https://docs.microsoft.com/en-us/wi...rosoft-windows-shell-setup-autologon-username
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Пожалуйста, обратите внимание, что пользователь заблокирован
Может. Максимальный размер - 256 символов.
О хоспаде ну сделай себе буффер размером 256 + длина c:\users\\randomname, какая проблема?
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Выделять в стеке 32767 символов под каждый путь глупо
Выделяйте в хипе и будет норм. В чем проблема? Лучше пусть будет "лишние" несколько килобайт, чем прога упадет на каком-то экзотическом компе.

У нас на форуме две крайности. Одни экономят байты там, где не надо; а вторые пишут на петонах.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
У нас на форуме две крайности. Одни экономят байты там, где не надо; а вторые пишут на петонах.
В CPython кстати все выделенно на куче, даже целые числа, ну кроме None, True и False (они своего рода синглтоны, так что их можно не считать). И ничего, даже сравнительно быстро работает для языка без JIT-компилятора.
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх