不是动态定义的内置类型在程序执行期间是否总是留在同一块内存中?
如果这是我应该了解的事情,我该如何进行检查?
IE
int j = 0;
double k = 2.2;
double* p = &k;
如果 C/C++ 程序是高度内存密集型程序,系统架构或编译器是否会围绕所有这些对象移动?
注意:我不是在谈论容器,例如std::vectors<T>
. 这些显然可以在某些情况下重新分配,但这也是动态的。
附带问题:
下面的场景显然会引起一些人的注意。举个例子,这个指针在程序执行期间总是有效吗?
由于我的无知,这个附带问题已经过时了!
struct null_deleter
{
void operator() (void const *) const {};
};
int main()
{
// define object
double b=0;
// define shared pointer
std::shared_ptr<double> ptr_store;
ptr_store.reset(&b,null_deleter()); // this works and behaves how you would expect
}