真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

c語言動態(tài)內(nèi)存分配知識點及實例

c語言怎么實現(xiàn)動態(tài)內(nèi)存分配

站在用戶的角度思考問題,與客戶深入溝通,找到太仆寺網(wǎng)站設計與太仆寺網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗,讓設計與互聯(lián)網(wǎng)技術結合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:網(wǎng)站設計、網(wǎng)站建設、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣、域名注冊、網(wǎng)絡空間、企業(yè)郵箱。業(yè)務覆蓋太仆寺地區(qū)。

我們經(jīng)常會預先給程序開辟好內(nèi)存空間,然后進行操作。

int arr[5] ;

對這個數(shù)組我們在定義的時候必須給提前開辟好空間,并且在程序執(zhí)行的過程中,這個開辟的內(nèi)存空間是一直存在的,除非等到這個函數(shù)執(zhí)行完畢,才會將空間釋放。有個問題就是這個數(shù)組在程序中無法被修改。

這些問題給我們造成了一些使用上的不方便,所以,C中提供了malloc()函數(shù)。

關于malloc()函數(shù),這個函數(shù)它接受一個參數(shù):就是所需的內(nèi)存的字節(jié)數(shù)。然后malloc()找到可用內(nèi)存中那一個大小適合的塊。在這個過程中,malloc()可以來返回那塊內(nèi)存第一個字節(jié)的地址。所以,也就意味了我們可以使用指針來操作。malloc()可以用來返回數(shù)組指針、結構指針等等,所以我們需要把返回值的類型指派為適當?shù)念愋?。當malloc()找不到所需的空間時,它將返回空指針。

例:

double *p;

p=(double*)malloc(30*sizeof(double));

在這個程序中,首先開辟了30個double類型的空間,然后把p指向這個空間的位置。在這里的指針是指向第一個double值。并不是我們?nèi)块_辟的30個double的空間。這就和數(shù)組一樣,指向數(shù)組的指針式指向數(shù)組首元素的地址,并不是整個數(shù)組的元素。所以,在這里我們的操作也和數(shù)組是一樣的,

p[0]就是第一個元素,p[1]就是第二個元素。

至此,我們就可以掌握到一種聲明動態(tài)數(shù)組的方法。

int arr[n];

p=(int *)malloc(n*sizeof(int));

//我們在這里使用的時候要元素個數(shù)乘類型字節(jié)長度,這樣就達到了動態(tài)開辟內(nèi)存空間。

當我們使用malloc()開辟完內(nèi)存空間以后,我們所要考慮的就是釋放內(nèi)存空間,在這里,C給我們提供了free()函數(shù)。free()的參數(shù)就是malloc()函數(shù)所返回的地址,釋放先前malloc()函數(shù)所開辟的空間。

例:

對于上面我們所開辟的空間進行釋放,那么我們就可以這樣

free(p);

程序還調(diào)用了exit()函數(shù),這個函數(shù)是在內(nèi)存分配失敗時結束程序。

程序例子:

#define _CRT_SECURE_NO_WARNINGS 1
#include
#include//malloc()函數(shù)被包含在malloc.h里面
#include
int main(void)
{
  char*a = NULL;//聲明一個指向a的char*類型的指針
  a = (char*)malloc(100 * sizeof(char));//使用malloc分配內(nèi)存的首地址,然后賦值給a
  if (!a)//如果malloc失敗,可以得到一些log
  {
    perror("malloc");
    return-1;
  }
  sprintf(a, "%s", "HelloWorld\n");//"HelloWorld\n"寫入a指向的地址
  printf("%s\n", a);//輸出用戶輸入的數(shù)據(jù)
  free(a);//釋放掉使用的內(nèi)存地址
  system("pause");
  return 0;//例2有無內(nèi)存泄露?
}

這個程序主要用來檢測malloc返回值條件有誤。

在這里我們需要注意,在C中,類型指派(char *)是可選的,但是在C++中這個是必須有的,所以使用類型指派將使把C程序移植到C++更容易。

使用動態(tài)數(shù)組,主要是為了獲得程序的靈活性。我們可以需要多少個元素就讓數(shù)組開辟多少個。不需要浪費空間。

知識點補充:

常見的動態(tài)內(nèi)存錯誤

常見的錯誤有:對NULL指針進行解引用操作、對分配的內(nèi)存進行操作時越過邊界、釋放并非內(nèi)存分配的內(nèi)存、試圖釋放一塊動態(tài)分配的內(nèi)存的一部分以及一塊動態(tài)內(nèi)存釋放之后被繼續(xù)使用。

到此這篇關于c語言動態(tài)內(nèi)存分配知識點及實例的文章就介紹到這了,更多相關c語言怎么實現(xiàn)動態(tài)內(nèi)存分配內(nèi)容請搜索創(chuàng)新互聯(lián)以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持創(chuàng)新互聯(lián)!


當前文章:c語言動態(tài)內(nèi)存分配知識點及實例
文章URL:http://weahome.cn/article/jeepdj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部