首页 > 试题广场 >

p和"hello,world"存储在内存哪个区域?

[单选题]
int main()
{
    char *p = "hello,world";
    return 0;
}
p和"hello,world"存储在内存哪个区域?
  • 栈,堆
  • 栈,栈
  • 堆,只读存储区
  • 栈,只读存储区
推荐
根据C语言中的特性和定义p是一个局部变量,而C语言中局部变量存在于栈中,"hello wrold"是一个字符串字面常量,因此存储于程序的只读存储区中,p在这里其实只是指向了"hello wrold"在只读存储区中的地址而已。
编辑于 2015-02-03 15:17:09 回复(3)
(1)从静态存储区域分配:
内存在程序编译时就已经分配好,这块内存在程序的整个运行期间都存在。速度快、不容易出错,因为有系统会善后。例如全局变量,static变量等。
(2)在栈上分配:
在执行函数时,函数内局部变量的存储单元都在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。
(3)从堆上分配:
即动态内存分配。程序在运行的时候用malloc或new申请任意大小的内存,程序员自己负责在何时用free或delete释放内存。动态内存的生存期由程序员决定,使用非常灵活。如果在堆上分配了空间,就有责任回收它,否则运行的程序会出现内存泄漏,另外频繁地分配和释放不同大小的堆空间将会产生堆内碎块。
一个C、C++程序编译时内存分为5大存储区:堆区、栈区、全局区、文字常量区、程序代码区。
发表于 2016-03-03 22:13:24 回复(9)
局部变量存放在栈中,堆中存放的是new和malloc开辟出的,而程序中定义的常量存放在只读存储区
发表于 2016-07-28 10:49:38 回复(0)
五大存储区 堆区,new/malloc创建的内存 ; 栈区,局部变量 ; 静态区/全局区,全局变量,静态变量 ;文字常量区,只读存储区,常量字符串 ;程序代码区,函数体二进制代码
编辑于 2021-03-16 18:56:32 回复(1)
局部变量:栈
全局变量,static变量:全局静态区域
动态变量:堆
发表于 2018-04-16 15:22:09 回复(0)
(1)从静态存储区域分配:
内存在程序编译时就已经分配好,这块内存在程序的整个运行期间都存在。速度快、不容易出错,因为有系统会善后。例如全局变量,static变量等。
(2)在栈上分配:
在执行函数时,函数内局部变量的存储单元都在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。
(3)从堆上分配:
即动态内存分配。程序在运行的时候用malloc或new申请任意大小的内存,程序员自己负责在何时用free或delete释放内存。动态内存的生存期由程序员决定,使用非常灵活。如果在堆上分配了空间,就有责任回收它,否则运行的程序会出现内存泄漏,另外频繁地分配和释放不同大小的堆空间将会产生堆内碎块。
一个C、C++程序编译时内存分为5大存储区:堆区、栈区、全局区、文字常量区、程序代码区
发表于 2021-12-02 08:55:32 回复(0)
局部变量存放在栈中,堆中存放的是new和malloc开辟出的,而程序中定义的常量存放在只读存储区
发表于 2017-06-12 23:08:00 回复(0)
指针p是局部变量,在c语言中,局部变量储存在栈中。
“hello world” 是字符串,储存在自读储存区中。
发表于 2020-01-05 22:52:31 回复(0)
动态分配的内存才存放在堆,比如new  malloc,局部变量存放在栈,常量存放在只读存储区
发表于 2017-04-02 10:26:26 回复(0)
局部变量p存在栈中,字符串常量存储在只读存储器中
发表于 2016-04-07 18:55:46 回复(0)
栈在系统存在的区域,生成的字符串在只读内存区域!
发表于 2015-07-23 09:58:03 回复(0)
new/malloc存在堆区,指针变量存在于栈区
发表于 2022-02-20 14:54:40 回复(0)
(1)从静态存储区域分配:
内存在程序编译时就已经分配好,这块内存在程序的整个运行期间都存在。速度快、不容易出错,因为有系统会善后。例如全局变量,static变量等。
(2)在栈上分配:
在执行函数时,函数内局部变量的存储单元都在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。
(3)从堆上分配:
即动态内存分配。程序在运行的时候用malloc或new申请任意大小的内存,程序员自己负责在何时用free或delete释放内存。动态内存的生存期由程序员决定,使用非常灵活。如果在堆上分配了空间,就有责任回收它,否则运行的程序会出现内存泄漏,另外频繁地分配和释放不同大小的堆空间将会产生堆内碎块。
一个C、C++程序编译时内存分为5大存储区:堆区、栈区、全局区、文字常量区、程序代码区

发表于 2023-07-26 19:39:20 回复(0)
局部变量只存在于栈中。”hello world“是一个字符串字面常量,存储与程序的只读区。p指向了该字符常量的地址。
发表于 2021-12-11 20:39:18 回复(0)
p是这指针放在栈区,后面这个字符串放在字符常量区。
发表于 2021-10-31 14:31:59 回复(0)
局栈动堆
发表于 2019-03-19 23:50:33 回复(0)
D
发表于 2017-08-28 19:57:32 回复(0)
字符串常量在代码段的只读存储区
发表于 2017-07-08 08:47:37 回复(0)
p是局部变量,存放在栈中,helloworld是常量,存放在只读存储区
发表于 2017-05-21 19:14:43 回复(0)
局部变量存放在栈中,堆中存放的是new和malloc开辟出的,而程序中定义的常量存放在只读存储区
发表于 2017-04-14 09:00:20 回复(0)
函数内部定义的指针是局部变量,当然是在栈中;“hello world”字符串常量(const)当让是在只读存储区中。
发表于 2017-04-01 22:05:38 回复(1)