相关疑难解决方法(0)

如何用1个真正大的数组快速初始化

我有一个很大的阵列:

int* arr = new int[BIGNUMBER];
Run Code Online (Sandbox Code Playgroud)

如何用1号码快速填充它.通常我会这样做

for(int i = 0; i < BIGNUMBER; i++)
    arr[i] = 1
Run Code Online (Sandbox Code Playgroud)

但我认为这需要很长时间.

我可以使用memcpy或类似吗?

c++ arrays performance

6
推荐指数
1
解决办法
4742
查看次数

memset没有填充数组

 u32 iterations = 5;
 u32* ecx = (u32*)malloc(sizeof(u32) * iterations);

 memset(ecx, 0xBAADF00D, sizeof(u32) * iterations);
 printf("%.8X\n", ecx[0]);

 ecx[0] = 0xBAADF00D;
 printf("%.8X\n", ecx[0]);

 free(ecx);
Run Code Online (Sandbox Code Playgroud)

非常简单地说,为什么我的输出如下?

0D0D0D0D
BAADF00D
Run Code Online (Sandbox Code Playgroud)

ps:u32是unsigned int的简单typedef

编辑:

  • 用gcc 4.3.4编译
  • string.h包含在内

c memset

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

memset 可以用于多字节类型和非零值吗

我正在尝试将数组初始化为非零值:

BYTE byteArray[50];
memset(byteArray, 20, sizeof(byteArray));   // Works fine

int intArray[50];
memset(intArray, 20, sizeof(intArray));     // Does not work
Run Code Online (Sandbox Code Playgroud)

目前,我只是手动初始化数组:

// Initialise array manually
for (int pos = 0; pos < 50; pos++)
    intArray[pos] = 20;
Run Code Online (Sandbox Code Playgroud)

我确实很欣赏memset设置内存范围中的每个字节,因此这不能按照我需要的多字节类型的方式工作(除了请求值为 的特殊情况0)。有没有办法memset使用多字节类型强制非零值,或者可能有替代库函数?

c c++ arrays

3
推荐指数
1
解决办法
2475
查看次数

C++ memset()用于长(64位)类型

可能重复:
是否有memset()接受大于char的整数?

正如在memset的声明中可以看到的那样:

void * memset ( void * ptr, int value, size_t num );
Run Code Online (Sandbox Code Playgroud)

有没有办法使用这个memset函数(或STL库中包含的其他函数),以便您可以将内存设置为long long类型值?

我用它来初始化一个具有较大值的long long数组.

我必须说,我通过简单地迭代数组的每个值并将其设置为所需的值来"解决"这个问题.

c++ memset

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

标签 统计

c++ ×3

arrays ×2

c ×2

memset ×2

performance ×1