动态申请内存空间

17 篇文章 0 订阅

1、动态申请一维内存

(1)、用malloc函数

#include <stdio.h>
#include <string.h>
#include <malloc.h>

int main()
{
	int n=5;
	int  *temp;
	temp=(int*)malloc(sizeof(int)*n);
	for(int i=0;i<n;i++)
	{
			temp[i]=i;
	}
	for(i=0;i<n;i++)
	{
		printf("%d ",temp[i]);
	}	
	free(temp);
	return 0;
}

(2)用new

#include <iostream>
using namespace std;

int main()
{
	int n=5;
	int  *temp;
	temp=new int[n];
	for(int i=0;i<n;i++)
	{
			temp[i]=i;
	}
	for(i=0;i<n;i++)
	{
		printf("%d ",temp[i]);
	}	
	delete [] temp;
	return 0;
}



2、动态申请二维内存

(1)、用malloc函数

#include <stdio.h>
#include <string.h>
#include <malloc.h>

int main()
{
	int n=5; //n表示行
	int  **temp;
	int m=2; //m为列
	temp=(int**)malloc(sizeof(int *)*n);
	for(int k=0;k<n;k++)
		temp[k]=(int *)malloc(sizeof(int)*m);
	for(int i=0;i<n;i++)
	{
		for(int j=0;j<m;j++)
			temp[i][j]=i*m+j;
	}
	for(i=0;i<n;i++)
	{
		for(int j=0;j<m;j++)
			printf("%d ",temp[i][j]);
		printf("\n");
	}	
	free(temp);
	return 0;
}

(2)、使用new

#include <iostream>
using namespace std;


int main()
{
	int n=5; //n表示行
	int  **temp;
	int m=2; //m为列
	temp=new int*[n];
	for(int k=0;k<n;k++)
	{
		temp[k]=new int[m];
	}

		for(int i=0;i<n;i++)
	{
		for(int j=0;j<m;j++)
			temp[i][j]=i*m+j;
	}
	for(i=0;i<n;i++)
	{
		for(int j=0;j<m;j++)
			printf("%d ",temp[i][j]);
		printf("\n");
	}	
	delete [] temp;

	return 0;
}

  • 5
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 在C语言中,向系统动态申请存储空间通常使用malloc函数。malloc函数返回值为void*类型的指针,如果指针为NULL则说明分配失败,否则分配成功。下面是一个示例: ```c #include <stdio.h> #include <stdlib.h> int main() { int *p; p = (int *) malloc(sizeof(int)); if (p == NULL) { printf("动态内存分配失败\n"); } else { printf("动态内存分配成功\n"); free(p); // 释放动态内存 } return 0; } ``` 在上述示例中,我们通过malloc函数向系统申请了一个int类型的存储空间,并将指针p指向该空间。然后通过判断p是否为NULL来判断是否分配成功。最后需要记得在程序结束前通过free函数释放动态内存。 ### 回答2: 要判断向系统动态申请存储空间是否成功,可以使用C语言中的动态内存分配函数——malloc。 首先,使用malloc函数申请所需的存储空间,并将返回值赋给一个指针变量ptr,表示已成功申请存储空间。 接下来,判断ptr是否为NULL。若为NULL,则说明系统动态申请存储空间失败;若不为NULL,则说明系统动态申请存储空间成功。 以下是一个示例代码: #include <stdio.h> #include <stdlib.h> int main() { int* ptr; int n; printf("请输入需申请存储空间大小(以int为单位):"); scanf("%d", &n); ptr = (int*)malloc(n * sizeof(int)); if (ptr == NULL) { printf("系统动态申请存储空间失败\n"); } else { printf("系统动态申请存储空间成功\n"); free(ptr); // 释放申请存储空间 } return 0; } 在以上示例中,首先通过scanf函数从用户获取需申请存储空间大小,然后使用malloc函数动态分配了n个int类型的存储空间,并将返回的指针赋给ptr。 接着,通过判断ptr是否为NULL,输出相应的成功或失败的提示信息。 最后,在不再使用这段存储空间时,我们需要使用free函数将其释放,以防止内存泄漏。 ### 回答3: 要判断向系统动态申请存储空间是否成功,可以使用C语言中的内存分配函数malloc进行分配,然后通过判断返回的指针是否为NULL来确定分配是否成功。 下面是一个示例代码: ```c #include <stdio.h> #include <stdlib.h> int main() { int* ptr; // 定义一个指针变量 int size = 10; // 分配的存储空间大小 // 使用malloc函数动态分配存储空间 ptr = (int*)malloc(size * sizeof(int)); // 判断分配是否成功 if (ptr == NULL) { printf("分配存储空间失败!\n"); } else { printf("分配存储空间成功!\n"); // 在这里可以对分配的存储空间进行操作 // 例如,给指针赋值 for (int i = 0; i < size; i++) { ptr[i] = i; } // 释放分配的存储空间 free(ptr); } return 0; } ``` 上述代码中,我们定义了一个指针变量`ptr`,然后使用`malloc`函数动态分配了`size`个`int`类型的存储空间。接着通过判断`ptr`是否为NULL来确定分配是否成功。 如果分配成功,我们可以在代码的后续部分对分配的存储空间进行操作,例如给指针赋值、读取或修改存储空间中的数据等。最后,我们使用`free`函数释放已分配的存储空间。 注意,在使用完动态分配的存储空间后,一定要调用`free`函数来释放该空间。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值