编写C语言遇到的一些问题6

本文讨论了C语言程序在Windows与Linux环境下运行结果不同的原因,强调了在Windows下设置为x64编译的重要性。此外,提到了Windows与Linux中可能出现的语法差异,尤其是与编码格式相关的问题。还涉及了0xC0000005错误,通常由非法内存访问引起,并提醒注意内存释放以避免泄漏。最后,针对结构体中包含指针成员时的数组分配给出了参考链接。
摘要由CSDN通过智能技术生成

1.相同的c语言程序在windows和在linux调试的时候,若结果不同,很有可能是windows中vs2013中设置的问题,因为我的linux是64位的,所以下面debug的时候一定要设置x64,因为这地方默认是win32

2.相同的c语言程序在linux编译时如果语法没有问题,而在windows上语法有问题,而通过读程序,又往往找不到程序的问题出在哪,往往是格式的问题,vs2013默认情况下是:

若出现不明所以的语法错误,可尝试将编码格式改为:

3.0xC0000005: 读取位置 0xFFFFFFFFFFFFFFFF 时发生访问冲突

这种情况一般是使用了非法内存,具体的原因还得与自己的代码结合。另外使用malloc时记得free,否则很容易出现内存泄露。

4.当结构体中包含指针成员时,如何分配数组,参考:

 1 //定义如下结构体
 2 typedef struct student
 3 {
 4     int id;
 5     char* name;
 6 } student_t;
 7 
 8 int main(){
 9 
10     //有四种定义形式
11 
12     //一、结构体变量
13     student_t xiaoming; //不需要为结构体分配内存,但是需要对name分配内存
14     xiaoming.name =(char*)malloc(10);
15     free(xiaoming.name); //释放成员指针
16 
17     //二、结构体指针
18     student_t *xiaoming=NULL;
19     xiaoming = (student_t*)malloc(sizeof(student_t));
20     xiaoming.name =(char*)malloc(10);
21     free(xiaoming.name); //释放成员指针
22     free(xiaoming); //释放指针
23 
24     //三、结构体数组
25     student_t xiaoming[3];
26     for( i = 0; i<3 ; i++ )
27     {
28       xiaoming[i].name = (char*)malloc(10); //初始化
29     }
30     for( i = 0; i<3 ; i++ )
31     {
32       free(xiaoming[i].name); //释放成员指针
33     }
34     
35     //四、结构体数组(第三种的另一种写法)
36     student_t *xiaoming=NULL;
37     xiaoming = (student_t*)malloc(sizeof(student_t)*3);
38     for( i = 0; i<3 ; i++ )
39     {
40       xiaoming[i].name = (char*)malloc(10); //初始化
41     }
42     for( i = 0; i<3 ; i++ )
43     {
44       free(xiaoming[i].name); //释放成员指针
45     }
46     free(xiaoming); //释放数组
47     
48     return 0;
49 }

参考:https://blog.csdn.net/datian3620/article/details/101761378

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值