首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >srand()触发不在映射区域内的访问

srand()触发不在映射区域内的访问
EN

Stack Overflow用户
提问于 2013-03-20 15:06:38
回答 1查看 433关注 0票数 4

我正在Linux上开发一个在矩阵上运行的程序。我在一段代码中遇到问题,它生成矩阵的随机值(在这里生成seg错误),这段代码触发了我的问题。

代码语言:javascript
复制
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#define INFINITO 10
#define MAX 11
#define MR 100
#define MC 100
#define MEMBER 1
#define NONMEMBER 0

double shortpath(double MatQuad[][MR+MC], int, int ,int precede[]);


int main(){

int d;
int c1, c2, i, j, p , h, l, k, x, mrr, rf, cf;
double X[MR][MC], F1k[MR+1][MC];
double MatQuad[MR+MC][MR+MC];
double P[MC][MC][MC];
int precede[MR+MC];
double best_Delta, Delta;
int best_i, best_j, best_h, best_l;

srand(8);
   for(j=0; j<MR; ++j){
     for(h=0; h<MC; ++h)
       X[j][h]=(rand()% MAX)*0.1;
   }

使用瓦兰时,我在网上得到

代码语言:javascript
复制
srand(8);

错误信息:

访问地址0x7FE7EA0B8 PID: 2484的映射区域

你认为语义或.有什么问题吗?我想给srand一个系统时钟的价值,但我的努力没有成功。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-03-20 15:09:58

代码语言:javascript
复制
double X[MR][MC], F1k[MR+1][MC];     // 80KB + 80.8KB
double MatQuad[MR+MC][MR+MC];        // 320KB
double P[MC][MC][MC];                // 8MB
int precede[MR+MC];                  // 800B 

我怀疑你有办法堆栈上的数据太多。堆栈空间有限。确切的大小取决于平台和编译器;如果您在数百KB的范围内,您正在与灾难调情。这样的大型数组无论作为静态数据还是堆都会更好。尝试向其中每一个添加一个static限定符,或者用malloc()分配它们。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15527321

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档