C语言--动态分配内存

原创 2016年08月31日 16:34:50

1.C语言中动态分配内存一般来说使用malloc函数,该函数包含在头文件 <stdlib.h>中,函数返回一个(void* )类型的指针,即从堆中申请到的空间的地址。

例如:

int* p=NULL;

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

即给指针p分配了40个字节大小的空间,可以把这个分配的空间当做数组处理,即p指向一个10个int型变量组成的数组的首地址。


2.如何动态分配内存空间使之达到类似二维数组的效果呢?

如下:

#include <stdio.h>
#include <stdlib.h>
 
int main()
{
    int **a;
    int i, j;
    a = (int**)malloc(sizeof(int*)*3);//为二维数组分配3行
    for (i = 0; i < 3; ++i)
    {   
  //为每列分配4个大小空间
        a[i] = (int*)malloc(sizeof(int)*4);
    }
    //初始化
    for (i = 0; i < 3; ++i)
    {
        for (j = 0; j < 4; ++j)
        {
            a[i][j] = i+j;
        }
    }
    //输出测试
    for (i = 0; i < 3; ++i)
    {
        for (j = 0; j < 4; ++j)
{
            printf ("%d ", a[i][j]);
        }
        printf ("\n");
    }
    //释放动态开辟的空间
    for (i = 0; i < 3; ++i){
        free(a[i]);
    }
    free(a);
    return 0;
}
注释比较清晰易懂,就不再解释啦。

3.类似的方法,可分配动态的三维、四维等等。。。。。

c语言动态内存分配之正确使用指针

#include #include #include //正确使用指针 void test002() { int len = 25; //pi指向申请内存的指针不要动,保留内容位置 后面好...
  • earbao
  • earbao
  • 2016年02月02日 15:19
  • 1217

C语言之动态分配内存

首先,我们应该知道,所有的程序都必须留出足够的内存空间来存储所使用的数据,所以我们经常会预先给程序开辟好内存空间,然后进行操作,但其实还有一种选择,能够让内存分配自动进行下去。对于传统数组,会遇到这样...
  • qq_26768741
  • qq_26768741
  • 2016年03月16日 12:26
  • 3527

C语言中手把手教你动态内存分配

C语言中手把手教你动态内存分配动态内存分配常见的内存分配的错误先上一个内存分配的思维导图:便于联想想象,理解: 首先我们介绍一下内存分配的方式:1:在静态存储区域中进行分配 内存在程序...
  • qq_29924041
  • qq_29924041
  • 2017年02月06日 23:21
  • 11099

C语言为二维数组动态分配内存的问题

C语言中动态分配一位数组是很简单的,但是没有可以直接对二维数组进行动态分配的函数,因此,要相对二维数组动态分配内存,便要借助于一位数组来实现,具体如下:   假设要为一个n*m的二维数组分配动态内存 ...
  • mmc_maodun
  • mmc_maodun
  • 2013年09月07日 22:57
  • 9873

C语言动态内存分配与释放

内存静态存储区(static):全局变量、静态变量(static int a;) 内存动态存储区(栈stack):局部变量 内存自由存储区(堆heap):临时用数据 其中静态存储区、动态存储区的...
  • cymy001
  • cymy001
  • 2017年12月01日 05:04
  • 73

简述C语言动态、静态内存分配

#include #include /** c语言静态内存分配 */ void func(int** address ) { //定义int类型的i变量,并赋值100 int i = 10...
  • cengdong
  • cengdong
  • 2017年02月25日 00:41
  • 1192

C语言-动态分配内存对任意个字符串进行排序

//动态分配内存对输入的任意字符串排序 #include #include #include #include //比较大小 //int str_compare(const char* src,co...
  • u013147600
  • u013147600
  • 2015年06月01日 11:03
  • 1239

c语言 什么时候需要动态分配内存?

我讲解一下c语言中动态分配内存的函数,可能有些初学c语言的人不免要问了:我们为什么要通过函数来实现动态分配内存呢?系统难道不是会自动分配内存吗?? 既然有人会问这样的问题,那么我在这里好好的讲解一下...
  • sinat_39085247
  • sinat_39085247
  • 2017年07月04日 20:47
  • 758

C语言 指针及动态内存分配

大一学《计算系统基础》的时候,没有讲这一块的内容,导致后面遇到指针就头疼,今天特来梳理一下这块的内容。 1.变量的类型     C语言是一种强类型的语言,即要求定义变量的时候必须制定类型,然后编译...
  • u010900754
  • u010900754
  • 2015年04月07日 15:43
  • 631

C语言中二维数组动态分配内存

最近《数据结构》看到哈夫曼树的构造一部分的程序,构造程序使用了锯齿状数组——即一二维数组,只不过每一行的长度是根据需要存放的元素个数分配的。这就涉及到二维数组内存的动态分配问题,先来看如何给一个普通的...
  • gaohuaid
  • gaohuaid
  • 2013年09月01日 13:01
  • 7543
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C语言--动态分配内存
举报原因:
原因补充:

(最多只允许输入30个字)