| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 434 人关注过本帖
标题:出错,求解决
只看楼主 加入收藏
as66760
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2013-10-28
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:7 
出错,求解决
#include<iostream>
struct CandyBar
{
char brand[20];
double weight;
int kaluri;
};
int main()
{   
    using namespace std;  

 CandyBar ab[3]={{"Mocha Munch",2.3,350},{"aaa",3.2,400},{"cde",5.2,200}};
 CandyBar *abc =new CandyBar[3];
 abc=ab;
 int i;
    for(i=0;i<3;i++)
{   
    cout <<"abc"<<i+1<<endl;
    cout <<" brand :"<<(abc+i)->brand;
    cout <<" weight :"<<(abc+i)->weight;
    cout <<" kaluri :"<<(abc+i)->kaluri<<".\n";
}
delete abc;
return 0;
}
搜索更多相关主题的帖子: double 
2013-10-30 08:08
peach5460
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:武汉
等 级:贵宾
威 望:30
帖 子:2780
专家分:6060
注 册:2008-1-28
收藏
得分:0 
错在何方?

我总觉得授人以鱼不如授人以渔...
可是总有些SB叫嚣着:要么给代码给答案,要么滚蛋...
虽然我知道不要跟SB一般见识,但是我真的没修炼到宠辱不惊...
2013-10-30 08:09
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:10 
这样呢
程序代码:
#include<iostream>

struct CandyBar
{
    char brand[20];
    double weight;
    int kaluri;
};
int main()
{  
    using namespace std;  

    CandyBar ab[3]={{"Mocha Munch",2.3,350},{"aaa",3.2,400},{"cde",5.2,200}};
    CandyBar *abc =new CandyBar[3];
    abc=ab;
    int i;
    for(i=0;i<3;i++)
    {  
        cout <<"abc"<<i+1<<endl;
        cout <<" brand :"<<(abc+i)->brand;
        cout <<" weight :"<<(abc+i)->weight;
        cout <<" kaluri :"<<(abc+i)->kaluri<<".\n";
    }
    abc=NULL;
    delete abc;
    return 0;
} 



DO IT YOURSELF !
2013-10-30 08:28
peach5460
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:武汉
等 级:贵宾
威 望:30
帖 子:2780
专家分:6060
注 册:2008-1-28
收藏
得分:0 
delete abc[];

我总觉得授人以鱼不如授人以渔...
可是总有些SB叫嚣着:要么给代码给答案,要么滚蛋...
虽然我知道不要跟SB一般见识,但是我真的没修炼到宠辱不惊...
2013-10-30 09:03
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
以下是引用peach5460在2013-10-30 09:03:13的发言:

delete abc[];
    abc=NULL;
    delete abc;

这2者之间有无区别呢

DO IT YOURSELF !
2013-10-30 09:15
rchunjiang
Rank: 4
来 自:大连
等 级:业余侠客
帖 子:42
专家分:262
注 册:2013-10-25
收藏
得分:0 
回复 楼主 as66760
其实这样就可以了
程序代码:
#include<iostream>
struct CandyBar
{
    char brand[20];
    double weight;
    int kaluri;
};
int main()
{
    using namespace std;

    CandyBar ab[3]={{"Mocha Munch",2.3,350},{"aaa",3.2,400},{"cde",5.2,200}};
    CandyBar *abc;
    abc=ab;
    int i;
    for(i=0;i<3;i++)
    {
        cout <<"abc"<<i+1<<endl;
        cout <<" brand :"<<(abc+i)->brand;
        cout <<" weight :"<<(abc+i)->weight;
        cout <<" kaluri :"<<(abc+i)->kaluri<<".\n";
    }
  return 0;
}
不需要使用new来分配动态内存,最后也就可以不用delete来释放内存。
1.原程序中
CandyBar *abc =new CandyBar[3];
表示申明了一个CandyBar类型的指针abc,并指向一块3个CandyBar大小的动态内存区,而后你又用
abc=ab;
来将指针abc指向数组ab,这样之前new得到的动态内存根本没用到,还造成内存泄漏,所以不需要使用new。
2.原程序中使用
delete abc;
出错的原因在于,abc已经被
abc=ab;
这一句指向了ab所在的内存区,而ab不是用new得到的动态内存,故不能使用delete来释放,之前用new得到的动态内存我们已经不知道地址了,所以没法释放。
你把程序改成
CandyBar *abc =new CandyBar[3];
delete abc;
abc=ab;
也能正确运行的,不要在使用了new过后使用abc=NULL。
2013-10-31 08:45
blueskiner
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:227
专家分:707
注 册:2008-9-22
收藏
得分:0 
new xxx[];?
xxx=ab;?
delete xxx?..............................笑而不语
2013-10-31 08:48
peach5460
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:武汉
等 级:贵宾
威 望:30
帖 子:2780
专家分:6060
注 册:2008-1-28
收藏
得分:0 
以下是引用blueskiner在2013-10-31 08:48:08的发言:

new xxx[];?
xxx=ab;?
delete xxx?..............................笑而不语

哈哈...我之前没注意上面还有个赋值咧...

我总觉得授人以鱼不如授人以渔...
可是总有些SB叫嚣着:要么给代码给答案,要么滚蛋...
虽然我知道不要跟SB一般见识,但是我真的没修炼到宠辱不惊...
2013-10-31 11:06
快速回复:出错,求解决
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018771 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved