vs 新建 Console 工程,代码如下:
class TestInfo
{
private:
int* m_pInt;
public:
TestInfo()
{
m_pInt = new int[100];
}
~TestInfo()
{
if (m_pInt)
{
std::cout << "delete ... " << m_pInt << std::endl;
delete[] m_pInt;
}
}
int* GetPointInt()
{
return m_pInt;
}
};
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
TestInfo* test1 = new TestInfo();
std::cout << "test1 ... " << test1 << std::endl;
std::cout << "test1 m_pInt ... " << test1->GetPointInt() << std::endl << std::endl;
//delete test1;
TestInfo* test2 = new TestInfo();
std::cout << "test2 ... " << test2 << std::endl;
std::cout << "test2 m_pInt ... " << test2->GetPointInt() << std::endl;
delete test2;
std::cout << std::endl;
TestInfo* test3 = test1;
std::cout << "test3 ... " << test3 << std::endl;
std::cout << "test3 m_pInt ... " << test3->GetPointInt() << std::endl;
delete test3;
std::cout << std::endl;
TestInfo* test4 = new TestInfo[3];
for (int n = 0; n < 3; n++)
{
std::cout << "test4 ... " << n << ": " << (test4 + n) << std::endl;
std::cout << "m_pInt ... " << (test4 + n)->GetPointInt() << std::endl << std::endl;
}
std::cout << std::endl;
delete[] test4;
return a.exec();
}
运行结果如下:
test1 ... 0000024403FFDF40
test1 m_pInt ... 0000024403FE3270
test2 ... 0000024403FFE030
test2 m_pInt ... 0000024403FE3480
delete ... 0000024403FE3480
test3 ... 0000024403FFDF40
test3 m_pInt ... 0000024403FE3270
delete ... 0000024403FE3270
test4 ... 0: 0000024403FF0A88
m_pInt ... 0000024403FE3270
test4 ... 1: 0000024403FF0A90
m_pInt ... 0000024403FE3480
test4 ... 2: 0000024403FF0A98
m_pInt ... 0000024403FE41B0
delete ... 0000024403FE41B0
delete ... 0000024403FE3480
delete ... 0000024403FE3270