VS報(bào)錯(cuò)C6011的問題:取消對(duì)NULL指針的引用(解決方法)
VS報(bào)錯(cuò)C6011:取消對(duì)NULL指針的引用 解決方法
寫了這樣一段代碼,第4、5行報(bào)錯(cuò):
C6011:取消對(duì)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)錯(cuò)消失:
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:取消對(duì)NULL指針“_____“的引用解決辦法
malloc之后沒有檢查是不是空間不夠返回了空指針NULL
//向內(nèi)存申請(qǐng)10個(gè)整形的空間
//p中存放開辟空間的地址
int* p=(int*)malloc(10*sizeof(int));
//開辟失敗,內(nèi)存不夠,返回空指針NULL
if(p==NULL)
{
//打印錯(cuò)誤原因的一個(gè)方式
printf("%s\n",strerror(errno));
//Not enough space
}malloc
動(dòng)態(tài)內(nèi)存開辟函數(shù)
庫(kù)函數(shù)聲明
void* malloc (size_t size);
簡(jiǎn)單例子
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<errno.h>
int main()
{
//向內(nèi)存申請(qǐng)10個(gè)整形的空間
//p中存放開辟空間的地址
int* p=(int*)malloc(10*sizeof(int));
//開辟失敗,內(nèi)存不夠,返回空指針NULL
if(p==NULL)
{
//打印錯(cuò)誤原因的一個(gè)方式
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)動(dòng)態(tài)申請(qǐng)的空間不再使用的時(shí)候
//就應(yīng)該還給操作系統(tǒng)
free(p);//主動(dòng)歸還空間,但p還是可以找到這塊空間,危險(xiǎn)
p = NULL;
return 0;//程序結(jié)束,被動(dòng)歸還空間
}相關(guān)說明:
這個(gè)函數(shù)向內(nèi)存申請(qǐng)一塊 連續(xù)可用 的空間,并返回指向這塊空間的指針。
如果開辟成功,則返回一個(gè)指向開辟好空間的指針。
如果開辟失敗,則返回一個(gè)NULL指針,因此malloc的返回值一定要做檢查。
返回值的類型是 void* ,所以malloc函數(shù)并不知道開辟空間的類型,具體在使用的時(shí)候使用者自己來決定
如果參數(shù) size 為0,malloc的行為是標(biāo)準(zhǔn)是未定義的,取決于編譯器。
malloc和free都聲明在 stdlib.h 頭文件中
到此這篇關(guān)于VS報(bào)錯(cuò)C6011:取消對(duì)NULL指針的引用 解決方法的文章就介紹到這了,更多相關(guān)VS報(bào)錯(cuò)C6011內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- VSCode遠(yuǎn)程連接服務(wù)器報(bào)錯(cuò):Could not establish connection to
- vscode編譯運(yùn)行c語(yǔ)言報(bào)錯(cuò)亂碼的解決
- vscode中的vue項(xiàng)目報(bào)錯(cuò)Property ‘xxx‘ does not exist on type ‘CombinedVueInstance<{ readyOnly...Vetur(2339)
- 快速解決VS Code報(bào)錯(cuò):Java 11 or more recent is required to run. Please download and install a recent JDK
- 解決安裝vs2019后原vs2017項(xiàng)目無法編譯各種報(bào)錯(cuò)的問題
- VS2017添加EF的MVC控制器報(bào)錯(cuò)的解決方法
- VS2015使用scanf報(bào)錯(cuò)的解決方法
相關(guān)文章
C++初階之list的模擬實(shí)現(xiàn)過程詳解
在C++中我們經(jīng)常使用STL,那個(gè)在那些我們常用的數(shù)據(jù)結(jié)構(gòu)vector,list的背后,又是如何實(shí)現(xiàn)的呢?這篇文章主要給大家介紹了關(guān)于C++初階之list的模擬實(shí)現(xiàn)的相關(guān)資料,需要的朋友可以參考下2021-08-08
使用Qt實(shí)現(xiàn)旋轉(zhuǎn)動(dòng)畫效果
這篇文章主要為大家詳細(xì)介紹了如何使用Qt實(shí)現(xiàn)旋轉(zhuǎn)動(dòng)畫效果,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-11-11
C++ OpenCV實(shí)戰(zhàn)之圖像全景拼接
本文主要介紹了如何使用OpenCV C++ 進(jìn)行圖像全景拼接,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)OpenCV有一定的幫助,感興趣的可以了解一下2022-01-01
C++ 調(diào)用 QML 回調(diào)方法的完整實(shí)現(xiàn)
在 Qt 6 開發(fā)中,C++ 與 QML 混合編程是常見場(chǎng)景,當(dāng) C++ 處理異步操作時(shí),需要將結(jié)果通知給 QML 界面,回調(diào)函數(shù)是最直觀的通信方式之一,下面小編就和大家詳細(xì)講講具體的調(diào)用實(shí)現(xiàn)方法吧2025-11-11
VisualStudio2019構(gòu)建C/C++靜態(tài)庫(kù)和動(dòng)態(tài)庫(kù)dll的問題 附源碼
這篇文章主要介紹了VisualStudio2019構(gòu)建C/C++靜態(tài)庫(kù)和動(dòng)態(tài)庫(kù)(dll)(文末附源碼),本文通過實(shí)例圖文相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-03-03
如何實(shí)現(xiàn)一定概率選中某一個(gè)字母
本篇文章是對(duì)如何實(shí)現(xiàn)一定概率選中某一個(gè)字母的解決方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05
C語(yǔ)言中操作sqlserver數(shù)據(jù)庫(kù)案例教程
這篇文章主要介紹了C語(yǔ)言中操作sqlserver數(shù)據(jù)庫(kù)案例教程,本篇文章通過簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-07-07

