C++に触れるのはかなり久しぶりなのもあり正確かちょっと怪しいですが、サンプルで作ったコードが動いたので回答します。(※専門家の人であれば、もっと専門用語を使って間違いのない説明してくれるとおもいますが。)
メモリを動的に確保しているというのはあっています(new Aの部分)。
それ以外がちょっと怪しいです。
new AによってクラスAのインスタンスとなるメモリを動的に確保し、そのメモリへのアドレスを取得します。
そしてそのアドレスはポインタ変数である ptrA に代入されます。
サンプルコードの②を見てほしいのですが、(*ptrA)としていますよね。
*を付けることで、ポインタ変数をクラス変数のように使えるようにしています。
C++
1class A {
2 public:
3 char* hello = "hello";
4};
5
6int main()
7{
8 A a;
9 printf("%s\n", a.hello);
10
11 A *ptrA = new A; // ① メモリを動的に確保し、ポインタを取得、代入する
12 printf("%s\n", (*ptrA).hello); // ② ポインタを参照して、メンバ変数を得る
13 free(ptrA); // ③ 動的に確保したメモリを開放する
14
15 int x;
16 scanf("%d", &x);
17
18 return 0;
19}