| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 510 人关注过本帖
标题:菜鸟,,,,delete的问题..
只看楼主 加入收藏
fishviv
Rank: 1
等 级:新手上路
帖 子:45
专家分:9
注 册:2010-9-10
结帖率:90.91%
收藏
已结贴  问题点数:20 回复次数:6 
菜鸟,,,,delete的问题..
程序代码:
#include<iostream>
using namespace std;
void Longest(int * a )
{
    int sum = 0 , best_i , best_j;
    for(int i = 0 ; a[i] != -1 ; ++i)
    {
        int temp = 1 ;
        for(int j = ( i + 1 ) ;  ; ++j)
        {    if(a[j] == -1 )
            {    if(temp > sum)
                {
                    sum = temp ;
                    best_i = i ;
                    best_j = j - 1 ;
                }
                break;
            }
            else
            {    if(a[j] >= a[j - 1])
                    ++temp ;
                else
                {    if(temp > sum)
                    {
                        sum = temp ;
                        best_i = i ;
                        best_j = j - 1 ;
                    }
                    break;
                }
            }
        }
    }
    cout<<"该数组中最长的单调递增的子序列的长度是:" <<sum<<endl
        <<"范围是"<<best_i + 1<<"~"<<best_j + 1<<endl;
    return  ;
}
int main()
{    int * b = new int ;
    cout<<"请输入一组整数,-1 表示数组结束"<<endl;
    for(int i = 0 ; ; ++i  )
    {
        cin>>b[i];
        if(b[i] == -1)
            break;
    }
    Longest( b ) ;
    delete b ;
    return 0 ;
}
delete错误.   个人觉得没有错啊!!!!求助
2011-04-20 22:08
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9031
专家分:54061
注 册:2011-1-18
收藏
得分:5 
只要看 main 函数就行了
int * b = new int ;
……
cin>>b[i]; 你不觉得会越界吗?
2011-04-21 08:31
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:5 
呵呵。这个错误确实很明显。可能是楼主对 new 存在理解上的错误。
2011-04-21 19:57
fishviv
Rank: 1
等 级:新手上路
帖 子:45
专家分:9
注 册:2010-9-10
收藏
得分:0 
回复 2楼 rjsp
能具体讲讲吗?貌似我的理解错误;
2011-04-21 23:15
fishviv
Rank: 1
等 级:新手上路
帖 子:45
专家分:9
注 册:2010-9-10
收藏
得分:0 
回复 3楼 pangding
能具体讲讲吗?记得指针可以做向量用,可以申请一块连续的内存,
2011-04-21 23:16
lucky563591
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:4
帖 子:765
专家分:2103
注 册:2009-11-18
收藏
得分:5 
是不是释放了两次
2011-04-22 13:34
Lyone
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:99
专家分:195
注 册:2010-12-7
收藏
得分:5 
回复 5楼 fishviv
int * b = new int ;
//这步你只告诉程序开辟了一个int空间,实际上你希望开辟一个int数组空间。所以应该int* b=new int[n];n为数组数量。
//释放时用delete[] b;
2011-04-22 14:23
快速回复:菜鸟,,,,delete的问题..
数据加载中...
 
   



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

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