Поскольку char
массивы обрабатываются по-разному с другими массивами, когда вы передаете их на cout
- оператор <<
перегружен для const char*
. Это для совместимости с C, так что массивы char
с нулевым завершением рассматриваются как строки.
См. этот вопрос .
Это связано с интегральным продвижением . Когда вы вызываете двоичный файл +
с char
(со значением «a») и int
(со значением 1), компилятор продвигает ваш char
к signed int
или unsigned int
. Какой из них специфичен для реализации - это зависит от того, подписан ли char
по умолчанию или без знака, и который int
может принимать весь диапазон char
. Таким образом, оператор +
вызывается со значениями «97» и «1», и он возвращает значение «98». Чтобы напечатать это как char
, вам нужно сначала набросить его:
cout << "Print char array[0]+1: " << static_cast(array[0]+1) << endl;
См. этот вопрос .
Эта утечка памяти была связана с отображением тоста с контекстом текущей активности. Когда я вставлял контекст приложения в класс, который отображал тосты, утечка была исправлена