编译器提供复制CTOR

Pra*_*Rao 1 c++

分配给的内存是多少char *ptr:

#include <iostream>
using namespace std;
class A
{ 
  private:
  int count;
  char *ptr;                                 
  public :
  void print()
  {    
  cout << "Addr " << &ptr << endl;     
  cout << "Addr " << *ptr << endl;     
  }       

};

int main()
{
 A obj;
 obj.print();
 A *obj1 = new A(obj); 
 obj1->print();
 cin.get();             
 return 0;   
}
Run Code Online (Sandbox Code Playgroud)

我正在使用编译器提供的复制构造函数.我有兴趣了解我将分配多少内存*ptr.

Bat*_*eba 5

记忆多少钱?好吧,根本没有.你只拥有一个整体char*,它本身就占用了sizeof(char*)大量的内存.您需要自己分配内存(可能带有a new)并将内存分配给ptr.delete一旦你完成了它,不要忘记释放记忆(也许是a ); 通常在析构函数中完成.

更好的是,使用std::string它为您照顾所有的记忆.

(PS技术上,当您取消引用一个单位指针时,该行cout << "Addr " << *ptr << endl;会给您未定义的行为).