分配给的内存是多少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.
记忆多少钱?好吧,根本没有.你只拥有一个整体char*,它本身就占用了sizeof(char*)大量的内存.您需要自己分配内存(可能带有a new)并将内存分配给ptr.delete一旦你完成了它,不要忘记释放记忆(也许是a ); 通常在析构函数中完成.
更好的是,使用std::string它为您照顾所有的记忆.
(PS技术上,当您取消引用一个单位指针时,该行cout << "Addr " << *ptr << endl;会给您未定义的行为).