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