64,281
社区成员
发帖
与我相关
我的任务
分享
class A
{
public:
A()
{
m_str ="dsfds";
}
void set(string s)
{
m_str = s;
}
string str()
{
return m_str;
}
virtual ~A()
{
m_str="1";
}
private:
string m_str;
};
struct B{
B()
{
i = 100;
}
B(int b)
{
i = b;
}
int i;
//这里
char buff[1000];
A* p = new(buff)A[6];
//我本以为p的数值应该和buff的一样,但p比buff大4.但实际上buff的前4字节的内存没被修改过。
//而把A换成B,p就等于buff了
//现在总结是pod类型就不加4。
//群里有人说关键字是uninitialized_fill,但我看了代码,没发现有哪指针偏移的操作
};
class A
{
public:
A()
{
m_str = new char[10];
}
~A()
{
delete [] m_str;
}
private:
char* m_str;
};
char buff[1000];
char* p = new(buff)char[6];