l**********r 发帖数: 4612 | 1 【 以下文字转载自 Programming 讨论区 】
发信人: linuxbeginer (linux), 信区: Programming
标 题: Char x[] = "abc"; 是在heap还是stack上?
发信站: BBS 未名空间站 (Mon Oct 19 17:15:12 2009, 美东)
Char x[] = "abc";
我认为内存allocated 在heap上。对么? |
N****w 发帖数: 21578 | 2 "abc" 在 static data segment 里,是静态的
【在 l**********r 的大作中提到】 : 【 以下文字转载自 Programming 讨论区 】 : 发信人: linuxbeginer (linux), 信区: Programming : 标 题: Char x[] = "abc"; 是在heap还是stack上? : 发信站: BBS 未名空间站 (Mon Oct 19 17:15:12 2009, 美东) : Char x[] = "abc"; : 我认为内存allocated 在heap上。对么?
|
r*******n 发帖数: 3020 | 3 非静态的,
如果
char* p= "abc",是放到静态区。
【在 N****w 的大作中提到】 : "abc" 在 static data segment 里,是静态的
|
N****w 发帖数: 21578 | 4 "abc" 这个字符串是在静态区
不然谁给它往里填 a b c
【在 r*******n 的大作中提到】 : 非静态的, : 如果 : char* p= "abc",是放到静态区。
|
r*******n 发帖数: 3020 | 5 char a[]="abc"
是字符数组 "abc\0"
如果“abc”是放在静态去,
那是不可以修改的,比如不能改成“acc”
【在 N****w 的大作中提到】 : "abc" 这个字符串是在静态区 : 不然谁给它往里填 a b c
|
r*******y 发帖数: 1081 | 6 you are right. I just test it.
【在 r*******n 的大作中提到】 : char a[]="abc" : 是字符数组 "abc\0" : 如果“abc”是放在静态去, : 那是不可以修改的,比如不能改成“acc”
|
r*******y 发帖数: 1081 | 7 by the way. How to understand the difference? just memorize ?
【在 r*******n 的大作中提到】 : char a[]="abc" : 是字符数组 "abc\0" : 如果“abc”是放在静态去, : 那是不可以修改的,比如不能改成“acc”
|
E*V 发帖数: 17544 | 8 这些无聊的细节,如果你不是干这一行的,不用计,如果你是干这一行的
自然就记住了。
【在 r*******y 的大作中提到】 : by the way. How to understand the difference? just memorize ?
|
r*******n 发帖数: 3020 | 9 理解为数组初始化,数组都是可以改变其内容的?
【在 r*******y 的大作中提到】 : by the way. How to understand the difference? just memorize ?
|
N****w 发帖数: 21578 | 10 静态的不是说 constant
是说 static variable/data address, vs dynamic memory address,vs stack
variable/address.
是直接在 binary image 里就存在的 data
一般是装载到程序内存空间的固定位置,不在 heap 不在 stack 里。
【在 r*******n 的大作中提到】 : char a[]="abc" : 是字符数组 "abc\0" : 如果“abc”是放在静态去, : 那是不可以修改的,比如不能改成“acc”
|
f*****Q 发帖数: 1912 | 11 我怎么记着这种应该是在数据区(Data Area)呢? |
f*****Q 发帖数: 1912 | 12 出个连线题,看看楼主能作对不?
A: static int i;
B: int * i = malloc(sizeof(int));
C: char [] i = "i";
D: int function(){int i; return 0;}
a: heap
b: data
c: stack
d: BSS |