c++ - 我应该为索引变量使用什么类型

标签 c++ cuda

这是一个最佳实践问题。我正在制作一个数组

type * x = malloc(size*sizeof(type));

AFAIK sizeof 给出了 size_t 的返回值。这是否意味着我应该使用 size_t 来声明或传递大小?另外,在索引数组时,我还应该使用 size_t 作为索引变量吗?这些的最佳实践是什么?这不是他们在学校教过的东西,现在我正在认真学习 C++,我想知道。

此外,如果有人提到我可以在哪里找到此类内容的最佳实践,那将会有所帮助吗?一种程序员礼仪书籍。

编辑: malloc 应该是 cudaHostAlloc 或 cudaMalloc,因为我正在开发一个在设备和主机上同时存储数组并同时更新两者的类。所以这里的 malloc 只是我实际要做的事情的占位符。

最佳答案

一般来说,我会使用尽可能减少隐式或显式转换和警告错误数量的方法。一般来说,事物按原样输入是有充分理由的。 size_t 是数组索引的不错选择,因为它是 unsigned 并且您通常不想访问 myarray[-1],例如。

顺便说一句,因为这是 C++,你应该改掉使用 malloc (free) 的习惯,它是 CRT(C 运行时库)的一部分。使用new(delete),最好使用smart pointers以尽量减少手动内存处理。

一旦您掌握了基础知识,一个好的实践引用(特定于语言)是 Effective C++ by Scott Meyers .合乎逻辑的下一步是 Effective STL .

关于c++ - 我应该为索引变量使用什么类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4035112/

相关文章:

CUDA MPI 性能瓶颈

cuda - 将参数按值传递给内核函数时,参数复制到哪里?

linux - 如何设置一个 NVIDIA 显卡用于显示而另一个用于计算(在 Linux 中)?

c++ - 通过引用捕获的抛出对象的生命周期

c++ - 复制二维结构数组 C++

c++ - (Im) 使用可变参数模板完美转发

c++ - 被删除的构造函数 "accessible"吗?

c++ - 在 CUDA 中从主机访问设备上的类成员数组指针

c++ - Long Long 数据类型的 Cuda 算术除法错误

c++ - 为什么 std::logic_error 实际上不是从 std::exception 继承的?