A hA = new A();
приводит к ошибке компилятора.Правильный способ определения переменной «в стеке» -
A ha;
, но pA просто указывает на класс A, насколько это полезно или полезно (какие-либо примеры, пожалуйста?)
В каком-то месте памяти у вас есть объект типа A, и pa указывает на него.Если вы хотите установить член A1 этого объекта равным 52, вы пишете
pA->A1 = 52;
Почему это полезная часть - не настоящий вопрос.
, когда я сделал A* pA = новый A ();я что-то выделил в куче?
Да, вы сделали.new
делает две вещи: выделяет память и вызывает конструктор.
Был ли какой-нибудь malloc () в фоновом режиме?
Это не определено, но во многих реализациях new
реализуется через malloc
и как получается int [] A = A [42]выделит память в куче 42 дюйма, а не A pA = new A ()?
Это, сэр, также является ошибкой компилятора.Вы имели в виду
int* A = new A[42];
Это operator new[]
, который распределяет массивы в куче и при необходимости вызывает конструкторы (в случае целых чисел это не так).