这样为什么不会发生访问内存失败
#include "iostream"
#include "string"
using namespace std;
char *GetMemory( void )
{
char p[] = "hello world";
return p;
}
void Test( void )
{
char *str = NULL;
str = GetMemory();
cout<<*(str+6)<<endl; //这里可以遍历hello world这个字符串
}
int main(void)
{
Test();
system("pause");
return 0;
}GetMemory函数内部的p数组是栈上的临时变量,函数返回后就销毁了。。
为什么下面的代码
cout<<*str<<endl;
cout<<*(str+1)<<endl;
。。。。。。
cout<<*(str+10)<<endl; 这样可以遍历输出hello world 整个字符串,这个字符串是栈上的临时变量,函数返回后就销毁了,str不应该可以访问到的啊。。
还有就是cout<<*(str+15)<<endl; 都可以输出,而且还没有编译错误,15已经远远超出了hello world的长度了啊。。
很奇怪啊。。。。
...全文
相关推荐
顶尖的Java多线程、锁、内存模型面试题!.docx
**问题三:什么是可重入性,为什么说 `Synchronized` 是可重入锁?**可重入性是指同一个线程能够多次进入同一段同步代码的能力。这可以防止线程在调用自己时发生死锁。
引发new/malloc动态申请内存失败的常见原因分析与总结
本文结合以往项目中遇到的多个问题实例,给大家详细总结一下引发动态申请内存失败的常见原因,以供借鉴或参考。
字符编码转换时发生内存越界引发的摄像头切换失败问题的排查
字符编码转换时发生内存越界引发的摄像头切换失败问题的排查。
java csv大数据量导出(千万级别,不会内存溢出)
例如,当某个线程在处理数据时发生异常,应捕获异常并记录,同时不影响其他线程的执行。如果可能,还可以设计一个补偿机制,用于重新处理失败的任务。
访问php时提示内存位置访问无效的解决办法和思路分析
解决PHP页面出现“内存位置访问无效”错误的方法和思路分析:当我们在新配置PHP环境或进行配置改动之后,例如新增加的DLL扩展,在访问页面时可能会遇到“内存位置访问无效”的提示。


