Ответ довольно очевиден, если вы уроните это в irb
и посмотрите, что думает Руби:
%w('a b c d e')
# => ["'a", "b", "c", "d", "e'"]
Он не содержит e
, а вместо этого e'
, потому что вы используете %w
неправильно.
Удалить кавычки при использовании %w
. Он разделяется на пробелы, а не на кавычки. Любые непробельные символы считаются частью строки и «застревают» к соседним буквам.
Это будет зависеть от опций компиляции для статических библиотек, которые будут связаны с приложением.
Если бы библиотеки компилируются с конфигурацией для использования статического Стандарта время выполнения C++ затем, я ожидал бы operator new
из Стандарта время выполнения C++, которое назовут.
Если библиотеки будут скомпилированы с конфигурацией для использования Стандарта время выполнения C++ DLL затем, то разрешение этих функций будет отложено до загрузки программы и должно быть разрешено к заменам MFC operator new
.
Я также включал ссылку на эту статью Herb Sutter относительно, обрабатывают ошибки выделения, которые можно найти полезным.
Поздравления - Вы, кажется, озадачили всех нас.:-)
В теории, если MFC обеспечивает перегрузку для глобального new
функция, затем это должно использоваться всем кодом в программе. Но так как статические библиотеки были скомпилированы, не зная, о котором, я не могу сказать наверняка, что это было бы.
Лучшее, которое я могу предложить, должно записать некоторый тестовый код для обнаружения. (У меня не будет доступа к моей системе Windows в течение следующих нескольких часов, или я сделал бы так меня и дал бы Вам ответ.)