有目的的随机内存分配
Purposeful random memory allocations
对于实验,我想测量使用随机内存访问找到给定记录所需的时间。 record
是一个简单的 class:
template<class TKey, class TData>
class Record {
TKey key;
TData data;
public:
Record(TKey key, TData data) {
this->key = key;
this->data = data;
}
};
现在我只是分配内存并插入一些记录。 (请忽略一些语法错误...)
const int size = 1_000_000;
Record<int, int> ** data = new Record<int, int>*[size];
for (int i = 0; i < size; ++i) {
// allocates sizeof(Record<int, int>) on heap
data[i] = new Record<int, int>(i, i);
}
问题是,在分配这些新的 Record
对象时,它们实际上是按顺序存储在内存中的。我希望这些内存位置 是随机的 。
C++ 有什么办法可以做到这一点吗?
最佳答案由UnholySheep 和
法比安。查看他们的评论以获得正确答案。
对于实验,我想测量使用随机内存访问找到给定记录所需的时间。 record
是一个简单的 class:
template<class TKey, class TData>
class Record {
TKey key;
TData data;
public:
Record(TKey key, TData data) {
this->key = key;
this->data = data;
}
};
现在我只是分配内存并插入一些记录。 (请忽略一些语法错误...)
const int size = 1_000_000;
Record<int, int> ** data = new Record<int, int>*[size];
for (int i = 0; i < size; ++i) {
// allocates sizeof(Record<int, int>) on heap
data[i] = new Record<int, int>(i, i);
}
问题是,在分配这些新的 Record
对象时,它们实际上是按顺序存储在内存中的。我希望这些内存位置 是随机的 。
C++ 有什么办法可以做到这一点吗?
最佳答案由UnholySheep 和 法比安。查看他们的评论以获得正确答案。