我有一个很大的阵列:
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或类似吗?
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
编辑:
我正在尝试将数组初始化为非零值:
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使用多字节类型强制非零值,或者可能有替代库函数?
可能重复:
是否有memset()接受大于char的整数?
正如在memset的声明中可以看到的那样:
void * memset ( void * ptr, int value, size_t num );
Run Code Online (Sandbox Code Playgroud)
有没有办法使用这个memset函数(或STL库中包含的其他函数),以便您可以将内存设置为long long类型值?
我用它来初始化一个具有较大值的long long数组.
我必须说,我通过简单地迭代数组的每个值并将其设置为所需的值来"解决"这个问题.