字符串内存泄漏的小实验
来源:互联网 发布:linux 机器重启时间 编辑:程序博客网 时间:2024/06/05 08:30
今天看到字符串的知识点,资料上在计算字符串长度和所占内存时,提到了所占内存比字符串长度要多一个字节,因为字符串末尾有一个不显示的 ‘\0’ 所以字符串长度比所占内存要少一个字节。
我就想,‘\0’ 是做什么用的,原来 ‘\0’ 是为了以 “%s” 输出字符串时终止输出用的。如果我把字符串以单个字符输出的形式输出呢?
int _tmain(int argc, _TCHAR* argv[])
{char s[] = { "hahahahah" }; //定义一个字符数组s[],把“hahahaha”赋值给s[]
for (int i = 0; i < 10; ++i) //循环输出字符串的单个字符
{
printf("%c", s[i]);
}
return 0;}
结果会把 ‘\0’ 以空格的形式输出。
既然可以吧 ‘\0’输出...如果我同时定义两个字符数组,保存两个不同的字符串,取到一个字符数组的地址是不是可以把另一个数组中的字符挨个输出出来?
因为栈内存中变量是向低地址扩展的,意思是先定义的变量地址比后定义的变量要大,所以我应该输出后来定义的数组
int _tmain(int argc, _TCHAR* argv[])
{
char a[] = {"hello world!"}; //定义一个字符数组a[],把“Hello World!”赋值给a[]
char s[] = { "hahahahah" }; //定义一个字符数组s[],把“hahahaha”赋值给s[]
for (int i = 0; i < 60; ++i) //循环输出字符串的单个字符
{
printf("%c", s[i]);
}
return 0;
}
因为不知道这两个数组的地址间隔多少,所以取了个比较大的值,的确把数组 a[] 的“hello world!” 也输出出来了。
如果我想取一段有用的数据,我不知道这段数据的地址,但是恰好我知道他前面的地址,我该怎么办呢
- 字符串内存泄漏的小实验
- 关于内存泄漏的一些小常识
- Android开发-Handler引起的内存泄漏-实验、分析、总结。
- Android开发-Handler引起的内存泄漏-实验、分析、总结。
- arc下内存泄漏的解决小技巧
- arc下内存泄漏的解决小技巧
- 内存小实验
- 内存碎片小实验
- 内存对齐小实验
- (转)Java中字符串与内存泄漏的问题
- 格式化字符串小实验
- Java的内存泄漏
- Java的内存泄漏
- Java的内存泄漏
- Java的内存泄漏
- Java的内存泄漏
- 内存泄漏的最新进展
- Java的内存泄漏
- 欢迎使用CSDN-markdown编辑器
- 求矩形并的面积
- 谢国忠:大数据在金融(视频+图文)
- 使用intellij idea导入项目时的问题小记
- docker_在ubuntu上安装docker服务
- 字符串内存泄漏的小实验
- Codeforces 275D Zero Tree 树形DP+贪心
- SQLServer中给表增加组合唯一约束
- JAVA基础——泛型数值列表
- Access denied for user 'root'@'localhost' (using password:YES)
- Eclipse中JSP,JS,HTML等代码自动提示的设置
- Android线性曲线视图
- 为什么使用线程池及线程池讲解
- 处理器流水线长度是否存在理论极限?