0

Я хочу написать класс, который может содержать 9 переменных (физические значения). 5 из них должны быть там каждый раз, но я хочу управлять другим 4 флагом (необязательно).C++ Когда будет выделена память в новом объекте?

Мой вопрос: Если у меня есть 4 переменные в частном секторе класса, которые я не использую ... Будет выделена память для них? Если да: как я могу избежать этого?

Я хочу выделить память для необязательных переменных dynamic.

+0

Пожалуйста, добавьте ваш код. – AndyG

+0

Вы можете добавить один указатель на массив с необязательными переменными, чтобы вы либо сохраняли 'nullptr', либо выделяли, когда вам это нужно. Это будет стоить вам только одного указателя. Или вы можете создавать подклассы. – CompuChip

+2

Я бы сказал, если вам нужно задать этот вопрос, тогда вам не стоит беспокоиться об избежании выделения памяти. –

ответ

0

Для этих 4 переменных вам необходимо объявить переменные-члены как указатели, которые инициализируются как NULL в конструкторах. Затем вы распределяете и освобождаете тех, кто вам нужен, не только забывайте, что вы освободите их от раскаяния. Однако, если ваше намерение - это только увеличение памяти, вам нужно оценить размер этих переменных по отношению к размеру указателей для них, является ли он полезным. Обычно он имеет смысл только для сложных больших типов данных или не создает файлы заголовков. В 32-битных платформах эти 4 переменные потребуют 4 * 4 = 16 байтов только для указателей, даже если они не используются. Кроме того, память потребляет контент, на который указывают эти указатели, когда они используются.