亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

VS報(bào)錯C6011的問題:取消對NULL指針的引用(解決方法)

 更新時間:2024年01月12日 10:48:34   作者:一只名叫Me的貓  
這篇文章主要介紹了VS報(bào)錯C6011的問題:取消對NULL指針的引用(解決方法),C6011:取消對NULL指針的引用,發(fā)現(xiàn)是沒有進(jìn)行空指針的判斷,解決方案跟隨小編一起看看吧

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)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論