int i;

cout<<memset(&i,1,sizeof(int))<<endl;

输出结果是16843009,而不是填充的1111 1111,为什么呢?

因为memset memcpy 都是string字符串处理函数,不是为int型做的!

memset(&n ,1, sizeof(int)) 就是对n指向的内存的4个字节进行赋值,因为memset是字符串处理函数,所以这里的每个1都用ASCII为1的字符去填充,转为二进制后,1就是00000001,占一个字节。而一个int型在win32系统上占4个字节,合在一起就是:

00000001000000010000000100000001,就等于16843009,就完成了对一个int型变量的赋值,那么它的结果显然不是我们想要的全部填充为1,因为memset是字符串处理函数,所以memset(&n,1,sizeof(int)); 中的1是当作ASCII为1的字符来处理了。

但是memset(&n,0,sizeof(int)); 结果为0 ,是正确的, 因为0 在C语言等于NULL, 所以memset 0 没有问题。但是, 其它数字会看作是字符,不会对应相应的整型数字,也就是说1不是对应整型中的数字1,而是对应ASCII码值为1的字符。

转载于:https://www.cnblogs.com/AI-Algorithms/p/3384934.html

C中使用memset相关推荐

  1. C++对象模型4——多重继承的对象内存模型、vptr与vtbl的创建与重置的时机、不要在含有虚函数的类的构造函数中调用memset

    一.多重继承的对象内存模型 class Base1 { public:virtual void f() {cout << "base1::f()" << e ...

  2. c语言中memset_C中的memset()

    c语言中memset The memset() function in C is used to set blocks of memory with a particular value. C语言中的 ...

  3. 构造函数中慎用memset

    写了一个小程序,工作时会跑一个大循环,在运行时发现有严重的内存泄露,内存不停增长. 经过几次复查,终于找出问题所在,代码结构大概如下: struct myobj { myobj() { memset( ...

  4. C++中的memset函数

    memsetmemset是计算机中C/C++语言初始化函数.作用是将某一块内存中的内容全部设置为指定的值,在数组初始化上非常简便,其通式如下: memset(数组名,数组中每一个元素要定义的初始值,s ...

  5. C++中的memset

     函数原型 void *memset(void *s, int ch, unsigned n); 将s所指向的某一块内存中的每个字节的内容全部设置为ch指定的ASCII值, 块的大小由第三个参数指 ...

  6. 疑问:c++中的memset

    在dev c++下调试  1 #include <mem.h>  2 #include <iostream.h>  3 #include <cstdlib>     ...

  7. C++中的memset()函数

    memset()函数可以对大内存的分配进行很方便的操作(初始化),所谓"初始化",当然是指将你定义的变量或申请的空间赋予你所期望的值,例如语句int i=0;就表明定义了一个变量i ...

  8. memset()的效率以及源码分析

    void *memset(void *s, int ch, size_t n); 作用:将s所指向的某一块内存中的每个字节的内容全部设置为ch指定的ASCII值, 块的大小由第三个参数指定,这个函数通 ...

  9. 汇编实现的memcpy和memset

    女主宣言 天天山珍海味的吃,也会烦.偶尔来点花生,毛豆小酌一点,也别有一番风味. 天天java, golang, c++, 咱们今天来点汇编调剂一下,如何? PS:丰富的一线技术.多元化的表现形式,尽 ...

  10. 结构体指针memcpy出错_关于memset和memcpy的使用,尤其对结构体进行初始化和拷贝的问题 | 学步园...

    在C++中使用memset和memcpy一定要慎重,要注意以下问题,否则会出现内存泄露 memset(this, 0, sizeof(Advance)); 虚函数指针应该在进入构造函数赋值体之前自动初 ...

最新文章

  1. MySQLRPM安装
  2. socket编程中read()、write()、recv()和send()
  3. 被尘封的故事技能点bug_新月纪元稳定版下载-新月纪元bug修复版1.0 修复版
  4. Golang实践录:命令行cobra库实例再三优化
  5. Is there anyway to discover which ip addresses are connected to the db?
  6. 一种将排序值换算为得分值的方法
  7. 2021-09-03相同的树
  8. 《Word排版艺术》
  9. 计算机视觉——SIFT算法
  10. 因果信号的傅里叶变换_常用信号的傅里叶变换对
  11. Quorum共识简析
  12. java joda 获取utc时间_Java获取时间与系统时间相差8小时终极解决方案
  13. 车辆出险保险索赔技巧——让每个车友都能学习
  14. 使用 acme.sh 生成免费的泛域名证书
  15. first DG方法:二维ODE的边值问题
  16. Git简单通俗易懂教程(包含常见问题与实战运用)
  17. Vue项目关闭格式检查命令
  18. oracle修改open_cursors,oracle的open_cursors问题探究
  19. 中国芯片人才大军在哪里?IEEE Fellow,投资人,创业者,工程师
  20. ssd(Single Shot MultiBox Detector)代码之(五) 训练自己的数据集

热门文章

  1. 测试类报错:空指针异常
  2. TCP Socket
  3. Struts2的标签库(二)之数据标签
  4. 【渝粤教育】国家开放大学2018年秋季 2707T种植业基础 参考试题
  5. 循环神经网络系列(二) LSTM 和 GRU
  6. 好好的虚拟机不能用了, 出现无法打开内核设备\\.\Global\vmx86: 系统找不到指定的文件的错误, 以下是网上找到的解决方法,亲测可用...
  7. [转]tar 命令使用
  8. Kafka集群中 topic数据的分区 迁移到其他broker
  9. 最近公共祖先 解题报告
  10. jenkins 全局工具配置