VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 269|回复: 4

[求助] 为什么不指定数组长度(通过初始化个数推断长度)会奔溃?

[复制链接]
liontxl 发表于 2018-1-7 15:49:20 | 显示全部楼层 |阅读模式
3驿站币
// main.cpp

#include "Sort.h"

int main(int argv, char *argc[])
{
        // double *pDouble = new double[]{4.4, 3.5,86.4,34.1,45.9};                // 程序崩溃
        double *pDouble = new double[5]{4.4, 3.5, 86.4, 34.1, 45.9};        // 程序正确
        std::cout << "double type:" << std::endl;
        Print(pDouble, 5);
       
        std::cout << std::endl << "double type sort:" << std::endl;
        Sort(pDouble, 5);
        Print(pDouble, 5);
       
       
       
        delete[] pDouble;
        system("pause");
        return 0;
}


// Sort.h

#ifndef SORT_H
#define SORT_H

#include <iostream>

#define UINT unsigned int

template<typename T>
void Sort(T *pArray, UINT nSize);
template<typename T>
void Print(T *pArray, UINT nSize);

/////////////////////////////////////////////////////////////

template<typename T>
void Sort(T *pArray, UINT nSize)
{
        if(!pArray || nSize < 1)return;
        for(UINT nCount = 1; nCount < nSize; nCount++)
        {
                for(UINT nIndex = 0; nIndex < nSize - nCount; nIndex++)
                {
                        if(*(pArray + nIndex) > *(pArray + nIndex + 1))
                        {
                                T temp = *(pArray + nIndex);
                                *(pArray + nIndex) = *(pArray + nIndex + 1);
                                *(pArray + nIndex + 1) = temp;
                        }
                }
        }
}


template<typename T>
void Print(T *pArray, UINT nSize)
{
        if(!pArray || nSize < 1)return;
        for(UINT nIndex = 0; nIndex < nSize; nIndex++)
                std::cout << pArray[nIndex] << "\t";
}

#endif // SORT_H

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

besteast 发表于 2018-1-7 18:57:52 | 显示全部楼层
并且已经从坛友或者管理的回复中解决了问题

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复

使用道具 举报

Syc 发表于 2018-1-8 10:11:13 | 显示全部楼层
我真是第一次见这种 new 的用法,编译是通过了,不过访问数组中的元素的时候直接崩溃了!
貌似内存模型有问题,最好还是按照标准的做法吧

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复

使用道具 举报

Mr李 发表于 5 天前 | 显示全部楼层
没有new实际的内存大小

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复

使用道具 举报

无忧根据地 发表于 5 天前 | 显示全部楼层
话不多说,直接分享,喜欢的收藏,转发分享: C语言教程: 链接:https://pan.baidu.com/s/1snulpet 密码:vctn 答疑及更多信息发布群:338191797

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入驿站

本版积分规则

 
 
在线客服
工作时间:
8:00-18:00
客服热线:
13591366679
官方微信扫一扫

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号 )

返回顶部
x

VC驿站微信公众号cctry2009

GMT+8, 2018-1-16 23:07

Powered by Discuz! X3.4

© 2009-2018 cctry.com

快速回复 返回顶部 返回列表