我正在为我的学习练习新的安置。最初我认为placement new会自动管理内存并且不会使变量重叠,但我认为情况并非如此(请纠正我并强调这一点)。下面的代码似乎在同一地址位置分配了新变量。
int arr[2] = {};
cout<<arr<<endl;
for(int i = 0; i<2;i++)
{
int *x = new(arr) int(i);
cout<<*x<<" "<<x<<endl;
}
将其更正为以下代码似乎可以解决问题(有什么建议吗?它是否正确?)
int arr[2] = {};
cout<<arr<<endl;
for(int i = 0; i<2;i++)
{
int *x = new(arr+i) int(i);
cout<<*x<<" "<<x<<endl;
}
另外,还有一个疑问需要澄清。上述做法是否良好(可能不是因为它可能会在更改循环条件时溢出容器)或放置新容器只能用于一次性分配变量。
如果我想一次性在单个容器中分配变量并检查边界泄漏,那么使用新位置分配变量的任何更好的方法。