C++中是否有关于数组元素构造顺序的保证?
#include <iostream>
using namespace std;
struct A {
A() { cout << this << endl; }
};
int main()
{
cout << "[0] is " << new A[3];
}
Run Code Online (Sandbox Code Playgroud)
打印出来
0x602010
0x602011
0x602012
[0] is 0x602010
Run Code Online (Sandbox Code Playgroud)
意味着元素是按照[0],[1]和[2]的顺序构建的.该语言是否保证该顺序?
由于写操作无论如何都是立即进行的(复制到内核缓冲区并返回),因此使用io_submit进行写操作有什么好处?
实际上,它(aio / io_submit)似乎更糟,因为您必须在堆上分配写缓冲区,并且不能使用基于堆栈的缓冲区。
我的问题只是写,而不是读。
编辑:我说的是相对较小的写入(最多只有几KB),而不是MB或GB,因此缓冲区复制应该不是一个大问题。
假设文件被替换(同名)批发而不是就地修改(即创建一个temp然后重命名为filename).
我想这个更改不会影响本地mmap,因为内核仍然有磁盘上旧文件(inode)的句柄.
但是,由于NFS是无状态的,mmap是否会在mmap的(长)生命周期内混淆并混淆旧/新文件内容?
在我看来,read/readv是处理NFS挂载文件的唯一安全方法.