本篇文章给大家谈谈c语言调试无法读取内存,以及c语言常见内存错误对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
1、C语言 数据结构 结构体指针变量“无法读取内存”2、c语言内存无法读取3、C语言,这个程序在运行的过程中,为什么说内存不能读取?
C语言 数据结构 结构体指针变量“无法读取内存”
指针需要先初始化再使用。
问题就在于,你为初始化了指针p,分配了Edge结构体指针给它,但是你没有初始化指针p-next_edge。p-next_edge也是个指针,并且没有初始化,不知道它指向什么内存位置,当然不能使用啦。
请给Edge结构体的成员next_edge指针也分配好空间并初始化,这样才可以正常使用。
c语言内存无法读取
/*
没发现什么问题,请用下面的代码再试运行一次,如仍有Bug,请把数据文件f1.txt发生来。以便进一步修改代码。
*/
#include stdio.h
typedef struct {
char name[20];
int age,num,wage,score;
}tch;
void sort(tch *a,int n) {
int i,j;
tch t;
for(i = 0;i n – 1;i++) {
for(j = i + 1;j n;j++) {
if(a[i].score a[j].score) {
t = a[i];
a[i] = a[j];
a[j] = t;
}
}
}
}
int main() {
int i,n = 0;
tch a[1000];
FILE *fp = fopen(“f1.txt”,”r”);
while(!feof(fp)) {
i = fscanf(fp,”%s%d%d%d”,a[n].name,a[n].age,a[n].num,a[n].wage);
if(i 4) break;
a[n].score = (5 – a[n].num) * 5000 + a[n].wage * 100 + a[n].age;
n++;
}
fclose(fp);
sort(a,n);
fp = fopen(“f2.txt”,”w”);
for(i = 0;i n;i++) fprintf(fp,”%5d%10s\n”,i + 1,a[i].name);
fclose(fp);
return 0;
}
C语言,这个程序在运行的过程中,为什么说内存不能读取?
数组越界了
也就是说你在对数组的操作过程中,由于疏忽
导致了数组的下标超过了你定义的大小
比如你定义了int
a[5]
这个数组
可是你在写代码的时候不小心超过了这个5,比如出现了a[6]
这个时候当然不能访问这段内存
关于c语言调试无法读取内存和c语言常见内存错误的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。