麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > C > 正文

二維指針動態分配內存連續問題深入分析

2020-01-26 16:00:23
字體:
來源:轉載
供稿:網友
首先,小編先貼出測試代碼:
復制代碼 代碼如下:

#include <cstdlib>
#include <iostream>
using namespace std;
#define nWidth  3
#define nHeight 4
//內存是否連續分配問題
int main(int argc, char *argv[])
{
    int **p = NULL;
    p = (int**)malloc(nWidth*sizeof(int*));
    if(p == NULL)
    return -1;

 cout<<"內存的不連續分配:"<<endl;
    for(int j = 0; j< nWidth; j++)
    {
       p[j] = (int*)malloc(nHeight*sizeof(int));
       if(p[j] == NULL)
       return -1;
    }

    for(int i = 0; i < nWidth; i++)
  for(int j = 0; j < nHeight; j++)
  {
   printf("%p  ",&p[i][j]);
   if(j == nHeight-1)
    cout<<endl;
  }
    cout<<endl;

    for(int j = 0; j < nWidth; j++)
    {
       free(p[j]);
       p[j] = NULL;       
    }
    free(p);
    p = NULL;

   
 int **q = NULL;
    q = (int**)malloc(nWidth*sizeof(int*));
    if(q == NULL)
    return -1;

 cout<<"內存的連續分配:"<<endl;
    q[0] = (int*)malloc(nWidth*nHeight*sizeof(int));
    if(q[0] == NULL)
    {
        free(q);
        return -1;
    }
    for(int i = 1;i < nWidth; i++)
    q[i] = q[i-1] + nHeight;

    for(int i = 0; i < nWidth; i++)
  for(int j = 0; j < nHeight; j++)
  {
   printf("%p  ",&q[i][j]);
   if(j == nHeight-1)
    cout<<endl;
  }
    cout<<endl;

    free(q[0]);
    q[0] = NULL;
    free(q);
    q = NULL;

    system("PAUSE");
    return EXIT_SUCCESS;
}

運行截圖如下:



如圖所示,兩種分配內存的方法都能正確的分配內存,但是內存分配的空間確實不一樣的。
分析:
第一種分配方法:
首先,是對每一行分配,也就是 nWidth 中的每一個進行分配,所以,我們可以看到每一行的內存都是連續的,每一個都占據四個字節
但是,為nHeight分配內存的時候,是隨機的進行分配內存,所以內存的位置是不確定的,所以,出現了第一種情況

第二種分配方法:
首先,同樣是為 p 分配內存,現在 p 指向一個位置
但是,在第二句中,我們需要注意,是直接在 p[0] 出分配了所有需要的內存,所以,這個時候就全部分配完了,而且由于是一次性分配內存,故內存的地址肯定是連續的,運行結果也證明了這一點

釋放內存的兩種情況:
第一種情況由于是兩次不同的分配內存,所以,在釋放內存的時候,我們應選擇不同的區域進行釋放。
第二種情況,只是連續調用兩次 malloc  ,所以,只需要連續兩次調用 free 即可完成釋放。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 欧美人与zoxxxx另类9 | 久国产 | 久草视频国产在线 | 欧美一级一区二区三区 | 欧美成人黄色小视频 | 久久久久亚洲精品 | 国产成人精品一区二区三区电影 | 91懂色 | 一日本道久久久精品国产 | 主播粉嫩国产在线精品 | 国产精品午夜在线 | 久久久久亚洲视频 | 美女视频黄视大全视频免费网址 | 黄色免费在线视频网站 | 亚洲码无人客一区二区三区 | 精品成人久久久 | 日本a v免费观看 | 在线成人一区二区 | 久久中文一区 | 亚洲午夜免费电影 | 午夜视频在线观看免费视频 | 日操操夜操操 | 国产精品一区2区3区 | 九九热精 | 免费一级毛片免费播放 | 亚洲成人福利在线观看 | 国产精品一区二区三区在线播放 | 一级黄色毛片播放 | 在线成人免费观看www | 久久国产乱子伦精品 | av在线中文 | 国产一区二区三区四区在线 | 96视频在线免费观看 | 激情视频在线播放 | 7777在线视频免费播放 | 4p嗯啊巨肉寝室调教男男视频 | 日本羞羞影院 | 国产成人精品日本亚洲语音 | 在线免费黄色网 | av在线免费观看中文字幕 | 精品国产91久久久久久 |