小编jam*_*mes的帖子

Fallocate() 的作用是什么?

其实我有两个问题。

有什么fallocate()作用?

我阅读了手册页并有以下理解。对于支持文件中打孔的文件系统,fallocate()用于在文件中打孔并分配新空间。对于没有漏洞的文件系统,fallocate()只能用于在文件末尾后分配新空间,即仅在 时有效len + offset > file_size

我的理解正确吗?如果是的话,我还有以下问题。

fallocate()ftruncate()扩展文件时相比

现在我想创建一个新文件并在文件中分配特定大小的零填充字节。我意识到两者fallocate()ftruncate()可以完成这项工作。他们有什么区别?

顺便说一句,我知道这fallocate()是不可移植的,但由于我的程序仅适用于 Linux,因此没有考虑到其他类 Unix 系统的可移植性。

谢谢你!

c unix linux filesystems

4
推荐指数
1
解决办法
5835
查看次数

非类型模板参数,其类型取决于另一个参数

我试图定义一个具有类型参数和非类型参数的模板函数。但是,非类型参数的类型取决于类型参数。它看起来像下面这样:

\n\n
template<typename T>\nclass A{\n    typedef T* Pointer;\n};\n\ntemplate<typename T, A<typename T>::Pointer P>\nT fun(){\n    return *P;\n}\n\nint main(){\n    fun<int, (int*)0>();\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

如果我编译代码,编译器会抱怨:

\n\n
test.cpp:6:34: error: template argument 1 is invalid\n template<typename T, A<typename T>::Pointer P>\n                                  ^\ntest.cpp:6:45: error: expected \xe2\x80\x98>\xe2\x80\x99 before \xe2\x80\x98P\xe2\x80\x99\n template<typename T, A<typename T>::Pointer P>\n                                             ^\n
Run Code Online (Sandbox Code Playgroud)\n\n

我应该怎么做才能让我的代码正常工作?谢谢你!

\n\n

附言。上面的代码只是结构的一个例子。我知道代码本身毫无意义。

\n

c++ templates

1
推荐指数
2
解决办法
1262
查看次数

标签 统计

c ×1

c++ ×1

filesystems ×1

linux ×1

templates ×1

unix ×1