我们在使用memset进行初始化的时候,经常会使用这种方式,memset(a,0,sizeof(a)),这让我们误以为将其初始化其他值也可以,实际是错误的。

void print_arr(unsigned short* ptr)
{
    for(int i = 0;i< 5;++i)
    {
        cout<<*(ptr+i)<<endl;
    }
}

void main()
{
    unsigned short a[5]={0};
    memset(a,1,sizeof(a));
    print_arr(a);
    cin.get();
}

这是因为memset是针对字节的,short为两个字节,所有每个数组内元素的实际值是0x0101,也就是257,所以对于多字节数组或结构体等元素的初始化,memset是不适用的,而对于unsigned char,则是适用的

走过的坑,记录一下

关于memset的错误使用的更多相关文章

  1. 关于memset的使用

    有些oj上的G++支持 cstdio的memset,有些则支持stdio.h中的memset(划掉) 这两个头文件关系比较复杂, 具体我也说不清...按照c++文档中的说法,stdio已经deprec ...

  2. gdb各种调试命令和技巧

    陈皓:用GDB调试程序 GDB概述———— GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具.或许,各位比较喜欢那种图形界面方式的,像VC.BCB等IDE的调试,但如果你是在UNIX平台 ...

  3. 航空概论(历年资料,引之百度文库,PS:未调格式,有点乱)

    航空航天尔雅 选择题1. 已经实现了<天方夜谭>中的飞毯设想.—— A——美国2. 地球到月球大约—— C 38 万公里3. 建立了航空史上第一条定期空中路线—— B——德国4. 对于孔明 ...

  4. memset 导致的段错误(segmentation fault)

    在调试Minixml库时,定义了一个结构体: struct ssid_info_s{ std::string wl_ssid_name; std::string wl_ssid_mac; std::s ...

  5. memset 导致的一个段错误

    原型: void *memset(void *s, int c, size_t n); 解释: memset :是 逐字节 拷贝,即n是指整个变量所占字节,在用于数组时一定要注意n不一定是 数组元素. ...

  6. ORA 各种oraclesql错误

    ORA-00001: 违反唯一约束条件 (.) ORA-00017: 请求会话以设置跟踪事件 ORA-00018: 超出最大会话数 ORA-00019: 超出最大会话许可数 ORA-00020: 超出 ...

  7. 安装PHP sphinx扩展 sphinx-1.1.0/sphinx.c:105:2: error: too few arguments 错误

    表现: /home/sphinx-1.1.0/sphinx.c: In function 'php_sphinx_client_read_property':/home/sphinx-1.1.0/sp ...

  8. linux socket连接中 ERRNO错误

    Connection refused:应该是连接的服务端没有启动或者连接端口错误,可以用如下代码测试 client端: #include <stdio.h> #include <sy ...

  9. memset 的实现分析

    memset 是 msvcrt 中的一个函数,其作用和用途是显而易见的,通常是对一段内存进行填充,就其作用本身不具有任何歧义性.但就有人一定要纠结对数组的初始化一定要写成如下形式: int a[... ...

随机推荐

  1. 原生Ajax--XmlHttpRequest对象和jQuery.ajax()

    Ajax主要就是使用 [XmlHttpRequest]对象来完成请求的操作,该对象在主流浏览器中均存在(除早起的IE) 1.XmlHttpRequest对象介绍 XmlHttpRequest对象的主要 ...

  2. vim替换tab到4空格

    ~/.vimrc 中设置 # 设置tab宽度 set ts= #也可以用 set tabstop= #空格替换tab set expandtab 如果对于已保存的文件 :%retab! !用于修改所有 ...

  3. jmeter之关联

    前言:当请求之间有依赖关系,比如一个请求的入参是另一个请求返回的数据,这时候就需要用到关联处理,Jmeter可以通过“后置处理器”中的“正则表达式提取器”来处理关联. 一.后置处理器-------正则 ...

  4. 18-09-11 软件rpm yum rm卸载 和批量删除

    一 在Linux下删除文件用rm命令,具体用法如下: rm [选项] 文件 选项说明: -f -force 忽略不存在的文件,强制删除,无任何提示 -i --interactive 进行交互式地删除 ...

  5. 通过配置文件添加MIME类型

    在web.config配置文件中的configuration节点下添加如下节点: <system.webServer> <staticContent> <mimeMap ...

  6. vue中 左侧导航条 多个toggleClass

    <ul> <li v-for='item in items' @click="showToggle(item)"> <i :class="{ ...

  7. Day03_Python知识总结

    1.元组:  元组其实跟列表差不多,也是存一组数,但它一旦创建便不能修改,所以又叫只读列表. names = ("alex","jack","eric ...

  8. c/c++ 求一个整数转换为二进制数时中‘1’的个数

    求一个正整数转换为二进制数时中‘1’的个数 分析:这道题目就是很简单的位运算,我们可以把这个整数和1进行&操作(就是二进制数中的最低位与1进行&),然后将这个整数进行右移处理,将下个位 ...

  9. CMake 笔记

    1. configure_file configure_file()让你可以在代码文件中使用CMake中定义的变量. configure_file(<input> <output&g ...

  10. Node版本管理工具-NVM的安装与使用(windows系统)

    友情提示:为避免踩坑,建议浏览全文后动手操作!!! 一.nvm是什么 看到这篇文章的猿/媛们肯定不会问这个问题了,但是我还是要说,哈哈哈! 无论工作还是干嘛,就不会一直做项目,所以肯定也不会一直用一个 ...