Сделайте себе одолжение и просто используйте int
, если это целое число. В противном случае он становится беспорядочным, когда вы сталкиваетесь с перегрузками функций, которые ожидают, что char
объекты на самом деле будут символами (например, форматированный поток ввода-вывода):
int hello = 52;
Если вам действительно нужно сэкономить немного памяти, вы можете использовать1006 * напрямую:
unsigned char hello = 52;
Если по каким-либо причинам вы хотите ограничить время жизни объекта меньшей областью действия, вы можете просто ввести другой уровень вложенности:
{
unsigned char hello = 52;
} // no need to delete here, because the object is destroyed automatically
Обратите внимание, что вы фактически используете больше памяти, когда вы объявляете указатель (который, вероятно, будет 64-битной шириной в настоящее время) и динамически выделяете память для хранения байта в другом месте.
Если выесли вы действительно хотите продлить срок службы вашего объекта за пределы текущей области, вы можете вместо этого использовать умный указатель, чтобы предотвратить такие проблемы, как утечка памяти или двойное освобождение.
std::unique_ptr<char> hello = std::make_unique<char>(52);
Но учтите, что это обычно хлопотно, и большинствочасто не нужно вообще, особенно для таких маленьких объектов. Просто объявите локальную переменную, скопируйте ее по мере необходимости и покончите с этим.
Кроме того, вам нужно разыменовать указатель , чтобы получить доступ к объекту, на который указывает указатель:
unsigned char * p = new unsigned char;
*p = 52;
delete p;