gpt4 book ai didi

c - 使用 memset 和 int 值初始化整数数组 - 失败

转载 作者:太空狗 更新时间:2023-10-29 15:16:37 30 4
gpt4 key购买 nike

我正在为 CUDA 程序编写主机代码,所以我无法使用标准 C 函数。我在使用 memset 函数初始化整数数组的元素时遇到问题。我的印象是您可以使用 memset 将整数数组初始化为例如所有 4,如下所示:

int num_elements = 10;
int* array_example = (int*)malloc(num_elements * sizeof(int));
memset(array_example, 4, sizeof(array_example));

但是当我这样做时,它会将每个字节(而不是每个 int)设置为 4。如果我说:

memset(array_example, 4, 1);

我在第一个整数中得到 4,如果我说:

memset(array_example, 4, 2);

我在第一个整数中得到 1024,在第二个整数中得到 0。我知道 memset 函数将第三个参数中指定的字节数设置为 4,但是有什么方法可以使用 memset 将每个整数设置为 4 而不是每个字节?否则,我是否会坚持使用 for 循环?我的 GPU 的计算能力很低,所以我无法访问一些更好的 CUDA 添加项,这些添加项允许更多的 C++ 使用。

最佳答案

如果您知道表格的大小并希望将每个元素设置为特定值,您可以随时编写:

int array[10] = { 4, 4, 4, 4, 4, 4, 4, 4, 4, 4 };

如果你使用 gcc,你也可以这样做:

int array[10] = {[0 ... 9] = 4};

当您必须动态分配数组时,我怀疑除了使用一个简单的循环之外是否还有任何替代解决方案。

关于c - 使用 memset 和 int 值初始化整数数组 - 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11134976/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com