VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

有编程疑问吗?还请到提问专区发帖提问!
搜索
查看: 621|回复: 4

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

[复制链接]
14_avatar_middle
在线会员 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

最佳答案

查看完整内容

我真是第一次见这种 new 的用法,编译是通过了,不过访问数组中的元素的时候直接崩溃了! 貌似内存模型有问题,最好还是按照标准的做法吧




上一篇:想了解一下,公司里一般用哪个IDE开发C++项目软件?
下一篇:汉字utf8编码的转换

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

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

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

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

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

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

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

回复

使用道具 举报

75_avatar_middle
在线会员 besteast 发表于 2018-1-7 18:57:52 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

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

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

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

回复

使用道具 举报

73_avatar_middle
在线会员 Mr李 发表于 2018-1-11 15:05:34 | 显示全部楼层
没有new实际的内存大小

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

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

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

回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号tongdun|网站地图wx_jqr

GMT+8, 2018-12-14 14:59

Powered by Discuz! X3.4

© 2009-2018 cctry.com

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