如果我定义存储象下面const char *值将存储在哪里。什么是堆栈崩溃和堆崩溃?
char arr[100] = "hello how are you";
其中是该字符串(
"hello how are you"
)char数组是什么呢? (堆栈/堆/数据区/别的地方?)。堆栈溢出VS堆栈崩溃
是什么堆栈溢出崩溃之间的区别。发生堆栈崩溃时?
还堆溢出vs堆崩溃?
堆栈溢出/堆溢出时会发生什么?
回答
- 字符串文本被存储在只读存储器和持续的节目的长度。因此,从函数返回这个指针是安全的
。
const char *f()
{
return "Hello";
}
就你而言,你将字符串文字的内容复制到本地字符数组变量中。所以"hallo how are you"
和char arr[100]
的存储是不同的。
您可以修改arr
,并且每次程序流回到那一行时,arr将再次用原始字符串初始化。您不能从函数返回指向arr
的指针,因为arr
只是一个局部变量。
提示:只有char arr[] = "hallo how are you";
是必要的,除非你想添加更多的字符而不是你的字符串。
我不知道什么是“堆栈崩溃”。
我不知道堆可以溢出。但是,在堆上分配内存的请求可能会失败。我不知道“堆崩溃”是什么。
当发生堆栈溢出时,程序通常会崩溃。当分配堆内存请求失败,
malloc
将返回NULL和new
将抛出std::bad_alloc
'char arr [100] =“你好吗“;'' - >数组的初始化听起来更好。 – 2014-11-04 10:58:59
@SouravGhosh更改 – 2014-11-04 11:02:16
'复制字符串文字的内容'也许这也需要重新措辞。 – 2014-11-04 11:04:14
- 1. 网络堆栈崩溃?
- 2. 崩溃后“不可能”堆栈跟踪的内容是什么?
- 3. 在Swift崩溃的情况下转储堆栈和异常
- 4. Symbolicate iOS崩溃堆栈跟踪无崩溃日志
- 5. 阅读iOS Webkit崩溃堆栈跟踪
- 6. VS2010,MFCEditBrowseControl堆崩溃
- 7. Firebase崩溃堆栈中的'<OR>'是什么?
- 8. 发生崩溃时查看堆栈
- 9. UINavigationController的崩溃推3次入堆栈
- 10. iOS崩溃堆栈跟踪没什么意义
- 11. M2Eclipse崩溃Eclipse:java堆空间
- 12. 堆内存分配崩溃与std :: wstring
- 13. 无效的崩溃堆栈跟踪或小型转储
- 14. 我在哪里可以找到Windows崩溃转储(蓝屏崩溃转储)?
- 15. boost在堆上创建unique_lock而不是堆栈导致mingw崩溃
- 16. ios崩溃堆栈跟踪中右侧的数字是什么意思?
- 17. 什么是这个晦涩的崩溃报告(堆栈跟踪)说?
- 18. 从Android获取崩溃堆栈跟踪的最简单方法是什么?
- 19. Internet Explorer 8在哪里存储其崩溃转储?
- 20. 流程崩溃和历史记录堆栈
- 21. execv为什么会崩溃?
- 22. 为什么我在这里崩溃?
- 23. Phusion Passenger正在崩溃......我如何获得堆栈跟踪?
- 24. 在C#中如何收集程序崩溃的堆栈跟踪
- 25. 防止android在崩溃后重新创建活动堆栈
- 26. 为什么代码崩溃?
- 27. enable_shared_from_this。为什么会崩溃?
- 28. 这个堆栈跟踪表明什么?由iOS8上的Xamarin.MediaPicker.TakePhotoAsync引起的崩溃
- 29. Xcode打印堆栈跟踪第三方库崩溃
- 30. GeddyJs(框架的NodeJS)部署到Heroku上雪松堆栈崩溃
你已经清楚地分开你的问题分为四个不同的问题。应该单独询问这些问题,单击每个问题的[“Ask Question”](http://stackoverflow.com/questions/ask)按钮。请这样做,这样我们可以分别回答每个问题:) – 2014-11-04 10:51:43
这可能会回答你的问题的一部分http://www.geeksforgeeks.org/memory-layout-of-c-program/ – amudhan3093 2014-11-04 11:27:32