关于C语言的memset容易出现的问题
来源:互联网 发布:人的音域 知乎 编辑:程序博客网 时间:2024/04/30 23:05
今晚一个关于memset函数的问题一直调试不出来。部分代码如下:
const unsigned int unmarked = 10000;int* diag_map = (int*)malloc(sizeof(int)*(num_rows+num_cols));memset(diag_map,unmarked,sizeof(int)*(num_rows+num_cols));for(i=0;i<num_nonzeros;i++){ if(diag_map[i] == unmarked){ //TODO }}
经排查,发现diag_map[i] == unmarked 这个条件一直不成立。仔细分析发现:
unsigned int 有一个特性就是如果将其赋值或者当作字节来使用的话,编译器将会截取低八位作为一个字节使用。
而memset函数进行内存初始化的时候恰好是根据字节填充的。所以将取10000的低八位就是00010000B作为字节使用。
在我的机器上,int占用四个字节,因此数组初始化后,本来想要每个元素都为10000.
但实际上每个元素为00010000000100000001000000010000B即为269488144.
0 0
- 关于C语言的memset容易出现的问题
- 关于C语言的memset
- 关于C语言的一些容易搞混的问题
- 关于c语言中容易忽略的问题
- 关于EL表达式容易出现的问题
- C语言中容易忽略的问题
- C语言容易混淆的问题
- C语言VS2010环境下打开文件容易出现的问题。
- C语言中的一些容易出现错误的知识点
- 关于Gradle的构建项目容易出现的问题整理
- 关于memset,不大不小的问题
- 关于memset赋值的问题
- 关于html中table容易出现的问题
- 关于vs2013做c语言scanf出现警告的问题
- C#-多线程数据同步容易出现的异常问题
- C语言的memset()函数的使用
- C语言一些容易出错的优先级问题
- memcpy/memset函数的c语言实现
- java线程
- (每日算法)LeetCode -- Merge Sorted Array (合并有序数组)
- Java web----Tomcat配置连接池
- Alex 的 Hadoop 菜鸟教程: 第8课 Hbase 的 java调用方法
- web前端开发规范
- 关于C语言的memset容易出现的问题
- 【将金令】1.12晚评:美国数据引爆多方大举反攻
- python的基本操作(dic)
- Android 图片添加水印图片或者文字
- 成为优秀高级程序员的10个要点
- vs2005里auto_ptr的指针赋值一个陷阱
- Windows/Linux 安装pip
- matlab 学习备忘
- 计算机视觉领域的一些牛人博客,超有实力的研究机构等的网站链接---个人整理