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