我想不出有什么用下面的代码的问题崩溃,它只是崩溃而不outputing任何内容到屏幕上:C++程序与结构声明数组
#include <cstdlib>
#include <iostream>
using namespace std;
typedef struct {
unsigned int recid;
unsigned int num;
char str[120];
bool valid;
} record_t;
typedef struct {
unsigned int blockid;
unsigned int nreserved;
record_t entries[100];
bool valid;
unsigned char misc;
} block_t;
int main(){
cout << "Before Buffer" << endl;
block_t buffer[1000];
cout << "After Buffer" << endl;
return 0;
}
我试图Qt的调试器和GBD和他们只显示分段故障并指向主功能的开始。
每个block_t元素的大小为13.2 Kbs,所以缓冲区数组的大小应该在13Mb左右。也许这对C阵列来说太过分了?
如果你认为它是数组的大小,那么你有没有尝试过更小的尺寸? – 2013-04-29 01:57:53
我应该对100GB数据进行外部排序,只是给出这个缓冲区我不认为我不能存储它13MB的内存......我一定是缺少...... – 2013-04-29 02:01:41
你的数组可能比你的堆栈大空间。使用堆空间(例如'block_t ** b =(block_t **)malloc(sizeof(block_t)* 1000);')。 – 2013-04-29 02:03:16