搜索
编程论坛
→
开发语言
→
C++论坛
→
『 VC++/MFC 』
→ 内存的疑惑
标题:
内存的疑惑
只看楼主
happynight
等 级:
贵宾
威 望:
15
帖 子:807
专家分:760
注 册:2008-4-26
结帖率:
87.93%
楼主
已结贴
√
问题点数:20 回复次数:9
内存的疑惑
范例
struct data{
int ival;
char *ptr;
};
data val2={1024,"Anna Livia Plurabelle"};
对于ptr的赋值是直接将指针指向字符串所占用的内存地址
还是先开辟内存存放字符串然后将指针指向 该字串的内存地址
应该怎样理解
搜索更多相关主题的帖子:
内存
2010-03-08 11:30
cnfarer
等 级:
版主
威 望:
179
帖 子:3330
专家分:21157
注 册:2010-1-19
第
2
楼
得分:5
这是初始化,与赋值不同!
ptr的赋值是直接将指针指向字符串所占用的内存地址
★★★★★
为人民服务
★★★★★
2010-03-08 11:47
happynight
等 级:
贵宾
威 望:
15
帖 子:807
专家分:760
注 册:2008-4-26
第
3
楼
得分:0
那你的意思是 需要分配内存空间
2010-03-08 14:07
cnfarer
等 级:
版主
威 望:
179
帖 子:3330
专家分:21157
注 册:2010-1-19
第
4
楼
得分:5
编译器会给字符串分配内存的。
data val2={1024,"Anna Livia Plurabelle"};
char *p="Anna Livia Plurabelle";
p和val2.ptr是指向同一个地址的!(VC编译器)
★★★★★
为人民服务
★★★★★
2010-03-08 16:26
happynight
等 级:
贵宾
威 望:
15
帖 子:807
专家分:760
注 册:2008-4-26
第
5
楼
得分:0
怎么会这样呢
那如果两个对象指向同一个内存地址 如果释放其中的一个对象那岂不是会造成另一个指针无效吗 还是这个内存也有一个引用计数 释放其中的一个指针就减少一次引用计数
另外 这种情况是只对字符串常量 还是对所有的常量都是这样处理
2010-03-09 08:38
happynight
等 级:
贵宾
威 望:
15
帖 子:807
专家分:760
注 册:2008-4-26
第
6
楼
得分:0
对了 现在这段代码是越看越问题多了
char *ptr照我的理解应该是一个char型的指针 对他的赋值应该是写成这样啊
char *ptr=&("Anna Livia Plurabelle") 怎么能直接将字符串赋给他
2010-03-09 08:41
lijm1989
来 自:珠海
等 级:
贵宾
威 望:
12
帖 子:675
专家分:2844
注 册:2009-10-14
第
7
楼
得分:5
回到2楼看看----->这是初始化,与赋值不同!
.
.
char *ptr照我的理解应该是一个char型的指针 对他的赋值应该是写成这样啊
char *ptr=&("Anna Livia Plurabelle") 怎么能直接将字符串赋给他
.
.
可以在初始化的时候让一个字符指针指向一个字符串常量。
char *ptr = "Anna Livia Plurabelle";
.
.
结构体初始也就这样吧。。。
2010-03-09 22:08
buxinqiufeng
等 级:
论坛游民
帖 子:20
专家分:55
注 册:2009-3-3
第
8
楼
得分:0
楼上正解,初始化时候,系统系统会分配内存空间的,
2010-03-10 10:55
ldg628
等 级:
火箭侠
威 望:
3
帖 子:526
专家分:3036
注 册:2009-6-23
第
9
楼
得分:5
char *p="Anna Livia Plurabelle";
像这种字符串编译器在生成可执行文件时,把它放在了只读数据段,执行时,也是把它放在数据段上,也就是说,这个字符串是不能够被改变的,用反汇编就可以看到;
还有我们在用"Anna Livia Plurabelle"时,"Anna Livia Plurabelle"代表的就是这段字符串的地址,你可以通过printf("0x%x\j", "Anna Livia Plurabelle")打印一下就知道了
2010-03-11 17:07
happynight
等 级:
贵宾
威 望:
15
帖 子:807
专家分:760
注 册:2008-4-26
第
10
楼
得分:0
谢谢各位的解答
2010-03-12 16:59
10
1/1页
1
参与讨论请移步原网站贴子:
https://bbs.bccn.net/thread-298807-1-1.html
关于我们
|
广告合作
|
编程中国
|
清除Cookies
|
TOP
|
手机版
编程中国
版权所有,并保留所有权利。
Powered by
Discuz
, Processed in 1.203164 second(s), 9 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved