相关疑难解决方法(0)

C++数组与向量

当使用C++向量时,花费的时间是718毫秒,而当我使用Array时,时间几乎是0毫秒.

为什么这么大的性能差异?

int _tmain(int argc, _TCHAR* argv[])
{
const int size = 10000; 
clock_t start, end; 
start = clock();
vector<int> v(size*size); 
for(int i = 0; i < size; i++)
{  
    for(int j = 0; j < size; j++)
    {   
        v[i*size+j] = 1;  
    } 
} 
end = clock();
cout<< (end - start)
    <<" milliseconds."<<endl; // 718 milliseconds

int f = 0;
start = clock(); 
int arr[size*size]; 
for(int i = 0; i < size; i++)
{  
    for(int j = 0; j < …
Run Code Online (Sandbox Code Playgroud)

c++ arrays vector visual-studio

4
推荐指数
2
解决办法
6149
查看次数

从VSTO项目中的Excel工作簿中读取50万条记录

我正在尝试使用VSTO在Excel中构建一个模拟工具,并创建一个Visual Studio 2010 Office工作簿项目.本工作簿中的一个工作表将包含大约五十万条记录.理想情况下,我想阅读所有在模拟中使用它们的记录,然后输出一些统计信息.到目前为止,OutOfMemory当我试图获得整个范围然后一次性完成细胞时,我有例外.有没有人对我如何阅读所有数据或建议有其他想法?

这是我的代码:

Excel.Range range = Globals.shData.Range["A2:AX500000"];

Array values = (Array)range.Cells.Value;

c# excel vsto

4
推荐指数
1
解决办法
1784
查看次数

数组崩溃超过120000个元素

当我做:

vector<double> myVect(120000000, 0);
Run Code Online (Sandbox Code Playgroud)

我可以让矢量看起来像我想要的那么多元素.但是,当我这样做时:

double myArray[120000];
Run Code Online (Sandbox Code Playgroud)

在我的程序崩溃之前,我被限制在大约120000-130000个元素的某个地方.有什么东西搞砸了或阵列真的有限吗?

c++ arrays

4
推荐指数
1
解决办法
2975
查看次数

堆上非常大的数组(Visual C++)

我希望有人可以帮助我,我正在尝试使用visual c ++ 2010在我的应用程序上创建一个int [400000000](4亿)数组但是它会产生溢出错误相同的代码在linux上运行g ++.我需要这个,因为我正在使用大型矩阵.先感谢您.

c++ arrays visual-c++ visual-c++-2010

2
推荐指数
1
解决办法
3080
查看次数

简单数组导致异常

#include "stdafx.h"

int _tmain(int argc, _TCHAR* argv[])
{
    float x[1000][1000];

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我得到"s.exe中0x01341637的第一次机会异常:0xC00000FD:堆栈溢出." 为什么?

c++ visual-studio-2010

2
推荐指数
1
解决办法
1937
查看次数

动态内存分配限制

我需要分配一个相当大的块(或块)内存 - 几千兆字节.但是,如果我尝试分配超过532000000个元素(~2 Gb)的float数组,我会收到运行时错误:

抛出'std :: bad_alloc'的实例后调用terminate():std :: bad_alloc

还行吧:

float* d = new float[532000000];
Run Code Online (Sandbox Code Playgroud)

但这很糟糕(bad_alloc异常):

float* d = new float[533000000];
Run Code Online (Sandbox Code Playgroud)

然后我尝试除了第一个之外还分配另一个数组.发现第二个浮点数组的最大大小是195000000个元素(~748 Mb).

还行吧:

float* d = new float[532000000];
float* e = new float[196000000];
Run Code Online (Sandbox Code Playgroud)

这是不好的:

float* d = new float[532000000];
float* e = new float[197000000];
Run Code Online (Sandbox Code Playgroud)

我想知道应用程序中已分配内存的限制是什么以及如何避免它们?如何使用虚拟内存?

我的系统 - 32位ubuntu 12.10,编译器 - gcc 4.7,RAM - 8GB(〜6.5 Gb免费)

c++ memory heap memory-management

2
推荐指数
1
解决办法
2822
查看次数

c++ 数组容器中的数组大小是否有上限?

这个问题是关于在 C++ 中使用数组容器进行排序。我正在对排序代码进行一些比较。我在 Mac Xcode 中有一个冒泡排序和一个 C++ 数组容器。任务是构建一个随机数数组,然后对这些数字进行排序,看看完成排序需要多长时间。冒泡排序对 100,000 个随机数需要 59 秒,对 1,000,000 个随机数需要 6,086 秒。我没有要求冒泡排序尝试超过一百万个数字。数组容器需要一秒钟来处理 100,000 个随机数,并且在运行时出现一百万个随机数大小的数组时会失败。在处理任何其他语句之前,故障发生在 main{...} 内部。main 中的第一条语句是一个简单的 cout << "this is a test of sorts \n";

在Xcode中,错误信息是:Thread1: EXC_BAD_ACCESS(code=2, address=0xfff5ecbd258)

适用的代码语句如下所示。

请注意,我在这里重新输入了代码,因此可能会出现错字。我希望基本的想法足够完整,让你看到发生了什么。

#define ARRAY_SIZE 1000000
#include <iterator>
#include <array>
Run Code Online (Sandbox Code Playgroud)

下面的代码在main里面

std::array<double, ARRAY_SIZE> A1 = {0};

// Here, I have some code that fills array A1 with random numbers using the rand() function

std::sort(A1.begin(), A1.end());

// some code that prints a selection of the A1 array.
Run Code Online (Sandbox Code Playgroud)

我的问题是...数组容器有上限吗?如果有,我怎么知道它是什么,是否有 work_around?max_size …

c++ arrays sorting xcode

1
推荐指数
1
解决办法
1658
查看次数

.NET Core / .NET 5 中的最大数组大小

因此,在过去,即使您在 web.config 中设置了 gcAllowVeryLargeObjects,.NET Framework 的最大数组大小始终为 UInt32.MaxValue。

这总是很糟糕,因为即使在 64 位机器上也无法创建大型数组。

所以问题是:微软最终在.NET Core最新版本/.NET 5中修复了这个问题吗?

任何帮助将不胜感激,有关此问题的文档并不好。20年过去了,希望他们终于解决了这个问题。

.net c# .net-core

1
推荐指数
1
解决办法
2359
查看次数

-6
推荐指数
1
解决办法
1176
查看次数