memset相关内容

在 C 中使用 memset() 有什么好处

我很好奇在类似于以下情况的情况下使用 memset() 在效率方面是否有任何优势. 鉴于以下缓冲区声明... struct More_Buffer_Info{无符号字符 a[10];无符号字符 b[10];无符号字符 c[10];};结构 My_Buffer_Type{struct More_Buffer_Info buffer_info[100];};结构 My_Buffer_Type ..
发布时间:2022-01-25 12:24:36 其他开发

C++ 程序员应该避免 memset 吗?

听说c++程序员应该避免memset, 类 ArrInit {//!int a[1024] = { 0 };诠释[1024];上市:ArrInit() { memset(a, 0, 1024 * sizeof(int));}}; 所以考虑到上面的代码,如果你不使用 memset,你怎么能让一个 [1..1024] 填充零?C++ 中的 memset 有什么问题? 谢谢. 解决方案 ..
发布时间:2022-01-18 23:32:30 C/C++开发

为什么 std::fill(0) 比 std::fill(1) 慢?

我在一个系统上观察到 std::fill 在大型 std::vector 上设置常量值时明显且始终较慢 >0 与常量值 1 或动态值相比: 5.8 GiB/s 对比 7.5 GiB/s 然而,对于较小的数据大小,结果是不同的,其中 fill(0) 更快: 如果有多个线程,在 4 GiB 数据大小时,fill(1) 显示出更高的斜率,但达到的峰值比 fill(0) (51 ..
发布时间:2022-01-06 12:46:07 C/C++开发

如何在没有运行时库的情况下使用 VC++ 内在函数

我参与了其中一项挑战,即您尝试生成尽可能小的二进制文件,因此我正在构建我的程序, 没有 C 或 C++ 运行时库 (RTL).我没有链接到 DLL 版本或静态版本.我什至没有 #include 头文件.我有这个工作正常. 某些 RTL 函数,例如 memset(),可能很有用,因此我尝试添加自己的实现.它在调试版本中运行良好(即使在编译器生成对 memset() 的隐式调用的那些地方).但是 ..
发布时间:2021-12-22 18:58:06 C/C++开发

go中是否有memset的模拟?

在 C++ 中,我可以使用 memset: const int MAX = 1000000;int is_prime[MAX]memset(is_prime, 1, sizeof(is_prime)) memset 所做的,粗略地可以描述为用一些值填充数组,但这样做真的非常快. 在 go 中我可以做 is_prime := make([]int, 1000000),但这将创建一个全为 0 ..
发布时间:2021-12-11 23:00:43 其他开发

memset 如何用 -1 初始化整数数组?

手册页介绍了memset: #include void *memset(void *s, int c, size_t n) memset() 函数用 s 指向的内存区域的前 n bytes 填充常量字节 c. 很明显,memset不能用于初始化int数组,如下图: int a[10];memset(a, 1, sizeof(a)); 这是因为int由4个字节表示(比如说),并且无法获 ..
发布时间:2021-11-18 04:55:01 C/C++开发

将 C int 数组重置为零:最快的方法?

假设我们有一个 T myarray[100],其中 T = int、unsigned int、long long int 或 unsigned long long int,那么将其所有内容重置为零的最快方法是什么(不仅用于初始化,而且在我的程序中多次重置内容)?也许使用 memset? 对于像 T *myarray = new T[100] 这样的动态数组也有同样的问题. 解决方案 ..
发布时间:2021-11-18 04:48:44 C/C++开发

memset() 比 C 中的 for 循环更有效吗?

memset() 是否比 for 循环更有效. 考虑这个代码: char x[500];memset(x,0,sizeof(x)); 还有这个: char x[500];for(int i = 0 ; i 哪个更有效,为什么?硬件有没有什么特殊的指令来做块级初始化. 解决方案 当然,memset 会比那个循环快得多.请注意您如何一次处理一个字符,但这些函数经过优化,可以一次 ..
发布时间:2021-06-15 19:18:21 其他开发

在2D int向量上使用std :: fill

我正在尝试将2D矢量中所有元素的值设置为特定值.据我所知,不能将memset用于向量,例如如何将它们用于数组.因此,我必须使用std :: fill将2D向量中的所有元素设置为特定值.但是,我知道如何对一维矢量使用填充,如下所示. vectorlinearVector(1000,0);fill(linearVector.begin(),linearVector.end(),10); ..
发布时间:2021-05-07 19:18:46 C/C++开发

如何初始化所有值都相同的2D数组?

我想用-1作为所有值初始化2D数组.我为此使用了 memset(). #include使用命名空间std;int dp [100] [100];memset(dp,-1,sizeof(dp));int dynamicProgramming(一些参数){//我想在这里使用dp [] []数组}int main(){cout ..
发布时间:2021-04-19 20:39:33 C/C++开发

memset在32位嵌入式平台上运行缓慢

我正在开发嵌入式设备(STM32,ARM-Cortex M4),并且期望 memset 和类似功能可以进行速度优化。但是,我注意到行为比预期慢得多。我在 -O3 arm-none-eabi-gcc 等) >优化标志。 我调查了反汇编, memset 函数一次写入一个字节并重新检查 0x802e2c4 ..
发布时间:2020-10-29 03:15:00 C/C++开发

如何为指向数组的指针做memset?

如何为指向数组的指针做memset? int(* p)[2]; p =(int(*))malloc(sizeof(* p)* 100); memset(p,0,sizeof(* p)* 100); 此分配正确吗? 解决方案 您可以使用 calloc 。 calloc 将替换 malloc 和 memset 。 p = cal ..
发布时间:2020-10-27 01:42:23 C/C++开发

Memset不起作用

我正在尝试通过以下代码在纯2D阵列上使用memset: #include #include 使用命名空间std; int main() { int l [3] [3]; memset(l,1,sizeof(l)); (int i = 0; i ..
发布时间:2020-09-27 03:15:32 C/C++开发

如何在不使用运行时库的情况下使用VC ++内部函数

我参与了其中的一种挑战,即您尝试生成尽可能小的二进制文件,因此我在没有C或C ++运行时库(RTL)的情况下构建程序 。我没有链接到DLL版本或静态版本。我什至没有 #include 头文件。我的工作正常。 某些RTL函数(例如 memset())可能很有用,所以我尝试了添加我自己的实现。它在Debug版本中运行良好(即使在编译器生成对 memset()的隐式调用的地方)。但是在Releas ..
发布时间:2020-09-27 02:14:32 C/C++开发