zoukankan      html  css  js  c++  java
  • 关于memset

    今天在写工程的时候遇到这样的问题:

    1 long motorEcoderRates[100];

    2 memset(motorEcoderRates, 111sizeof(motorEcoderRates));

     调试的时候发现motorEcoderRates的值并不是100,原来是自己对memset的理解不够深入

    功能: s所指向的 某一块内存中的每个字节的内容全部设置为ch指定的ASCII值。即将指定的内存,以字节为单位,置为ch所代表的内存形式。块的大小由第三个参数指定,这个函 数通常为新申请的内存做初始化工作。

    用法: void *memset(void *s, char ch, unsigned n);

    原理:以 字节为单位复制内存的二进制形式,到指定的内存区域。

    (注:第二个数字也可以是int型,然后截取该int变 量的最低字节。作为复制的二进制模板。所以第二个字节最常见的是0全部置零或 -1全部 置1。)

    用途:memset最常见的用途是对struct做初始化工作 

    所以,当数组类型不是char 且你初始化的是非零值时候,就会出问题,达不到你想要的效果。 

  • 相关阅读:
    runc create container 流程分析
    cri-o pod 创建源码分析
    hyperstart 容器创建流程分析
    MIT jos 6.828 Fall 2014 训练记录(lab 4)
    python 邮件发送 脚本
    jvm: 理解gc日志
    jvm:垃圾收集器
    GC 垃圾收集
    jvm结构
    Java transient关键字使用小记
  • 原文地址:https://www.cnblogs.com/chengmin/p/2443358.html
Copyright © 2011-2022 走看看