VS報(bào)錯C6011的問題:取消對NULL指針的引用(解決方法)
VS報(bào)錯C6011:取消對NULL指針的引用 解決方法
寫了這樣一段代碼,第4、5行報(bào)錯:
C6011:取消對NULL指針的引用
void EnQueue(LinkQueue& Q, ElemType x) { LinkNode* s = (LinkNode*)malloc(sizeof(LinkNode)); s->data = x; s->next = NULL; Q.rear->next = s; Q.rear = s; }
發(fā)現(xiàn)是沒有進(jìn)行空指針的判斷。
于是改為如下代碼,報(bào)錯消失:
void EnQueue(LinkQueue& Q, ElemType x) { LinkNode* s = (LinkNode*)malloc(sizeof(LinkNode)); if (!s)cout << "Invalid value!" << endl; // 判斷空指針 else s->data = x; Q.rear->next = s; Q.rear = s; }
擴(kuò)展:
C6011:取消對NULL指針“_____“的引用解決辦法
malloc之后沒有檢查是不是空間不夠返回了空指針NULL
//向內(nèi)存申請10個整形的空間 //p中存放開辟空間的地址 int* p=(int*)malloc(10*sizeof(int)); //開辟失敗,內(nèi)存不夠,返回空指針NULL if(p==NULL) { //打印錯誤原因的一個方式 printf("%s\n",strerror(errno)); //Not enough space }
malloc
動態(tài)內(nèi)存開辟函數(shù)
庫函數(shù)聲明
void* malloc (size_t size);
簡單例子
#include<stdio.h> #include<stdlib.h> #include<string.h> #include<errno.h> int main() { //向內(nèi)存申請10個整形的空間 //p中存放開辟空間的地址 int* p=(int*)malloc(10*sizeof(int)); //開辟失敗,內(nèi)存不夠,返回空指針NULL if(p==NULL) { //打印錯誤原因的一個方式 printf("%s\n",strerror(errno)); //Not enough space } else { //正常使用空間 int i=0; for(i=0;i<10;i++) { *(p+i)=i; } for(i=0;i<10;i++) { printf("%d ",*(p+i)); } } //當(dāng)動態(tài)申請的空間不再使用的時候 //就應(yīng)該還給操作系統(tǒng) free(p);//主動歸還空間,但p還是可以找到這塊空間,危險(xiǎn) p = NULL; return 0;//程序結(jié)束,被動歸還空間 }
相關(guān)說明:
這個函數(shù)向內(nèi)存申請一塊 連續(xù)可用 的空間,并返回指向這塊空間的指針。
如果開辟成功,則返回一個指向開辟好空間的指針。
如果開辟失敗,則返回一個NULL指針,因此malloc的返回值一定要做檢查。
返回值的類型是 void* ,所以malloc函數(shù)并不知道開辟空間的類型,具體在使用的時候使用者自己來決定
如果參數(shù) size 為0,malloc的行為是標(biāo)準(zhǔn)是未定義的,取決于編譯器。
malloc和free都聲明在 stdlib.h 頭文件中
到此這篇關(guān)于VS報(bào)錯C6011:取消對NULL指針的引用 解決方法的文章就介紹到這了,更多相關(guān)VS報(bào)錯C6011內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- VSCode遠(yuǎn)程連接服務(wù)器報(bào)錯:Could not establish connection to
- vscode編譯運(yùn)行c語言報(bào)錯亂碼的解決
- vscode中的vue項(xiàng)目報(bào)錯Property ‘xxx‘ does not exist on type ‘CombinedVueInstance<{ readyOnly...Vetur(2339)
- 快速解決VS Code報(bào)錯:Java 11 or more recent is required to run. Please download and install a recent JDK
- 解決安裝vs2019后原vs2017項(xiàng)目無法編譯各種報(bào)錯的問題
- VS2017添加EF的MVC控制器報(bào)錯的解決方法
- VS2015使用scanf報(bào)錯的解決方法
相關(guān)文章
C++編寫實(shí)現(xiàn)飛機(jī)大戰(zhàn)
這篇文章主要為大家詳細(xì)介紹了C++編寫實(shí)現(xiàn)飛機(jī)大戰(zhàn),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-06-06C++?AVL樹插入新節(jié)點(diǎn)后的四種調(diào)整情況梳理介紹
AVL樹是高度平衡的而二叉樹,它的特點(diǎn)是AVL樹中任何節(jié)點(diǎn)的兩個子樹的高度最大差別為1,本文主要給大家介紹了C++如何實(shí)現(xiàn)AVL樹,需要的朋友可以參考下2022-08-08C++使用JsonCpp庫操作json格式數(shù)據(jù)示例
這篇文章主要介紹了C++使用JsonCpp庫操作json格式數(shù)據(jù),結(jié)合實(shí)例形式詳細(xì)分析了JsonCpp庫的下載及C++使用JsonCpp庫對json格式數(shù)據(jù)序列化相關(guān)操作技巧,需要的朋友可以參考下2017-06-06帶頭結(jié)點(diǎn)單鏈表與不帶頭結(jié)點(diǎn)單鏈表的區(qū)別
這篇文章主要介紹了帶頭結(jié)點(diǎn)單鏈表與不帶頭結(jié)點(diǎn)單鏈表的區(qū)別,需要的朋友可以參考下2023-07-07數(shù)據(jù)結(jié)構(gòu) 雙機(jī)調(diào)度問題的實(shí)例詳解
這篇文章主要介紹了數(shù)據(jù)結(jié)構(gòu) 雙機(jī)調(diào)度問題的實(shí)例詳解的相關(guān)資料,雙機(jī)調(diào)度問題,又稱獨(dú)立任務(wù)最優(yōu)調(diào)度:用兩臺處理機(jī)A和B處理n個作業(yè)的實(shí)例,需要的朋友可以參考下2017-08-08