[Thinking in C] 内存截断
程序员文章站
2024-02-29 18:05:52
...
测试代码如下:
#include <stdio.h>
#include <stdbool.h>
typedef unsigned char byte;
int main( )
{
int DataSize[1];
DataSize[0]=256;
byte Compare[1];
Compare[0]=256;
int change[1];
byte *p= NULL;
p=(byte *) DataSize;
//特别注意此处是内存截断,可以往小了截,不能往大了截
printf("Compare[0]=%d\n",Compare[0]);
printf("DataSize[0]=%d\n",DataSize[0]);
printf("*p[0]=%d\n",*p);
}
console结果如下:
补充:
但是注意要是写下面这种对 指针 p前后矛盾的代码,是无法截断数据的。
#include <stdio.h>
#include <stdbool.h>
typedef unsigned char byte;
int main( )
{
int DataSize[1];
DataSize[0]=256;
byte Compare[1];
Compare[0]=256;
int change[1];
int *p= NULL;
p=(byte *) DataSize;
//特别注意此处是内存截断,可以往小了截,不能往大了截
printf("Compare[0]=%d\n",Compare[0]);
printf("DataSize[0]=%d\n",DataSize[0]);
printf("*p[0]=%d\n",*p);
}
上一篇: 简洁实用的Java Base64编码加密异常处理类代码
下一篇: ASP.NET过滤器的应用方法介绍