用malloc申请了一块内存,可不可以分批释放

brookmill brookmill 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
刚才突然冒出这么个奇怪的想法。
姑且不说这么做有没有什么实际意义,先讨论一下会不会引起内存泄漏或者指针越界之类的问题?
以下的代码我用VisualStudio的cl.exe编译运行,和预期的结果一样。
当然,这个程序太小了,说明不了什么问题。
#include <stdio.h>
#include <string.h>

#define MAX 1000

int main( void )
{
char *ptr;
int length;

ptr = (char *)malloc( MAX );
if (ptr == NULL)
exit (1);
scanf( "%s", ptr );
length = strlen( ptr );
if (length < MAX - 1)
free( ptr + length + 1);
printf( "%s\n", ptr );
free( ptr );
return 0;
}

或者这样:

char *ptr;
ptr = (char *)malloc( 1000 );
if (ptr == NULL)
exit (1);
free( ptr + 500 );
free( ptr + 200 );
free( ptr );
...全文

相关推荐

Malloc动态内存申请函数

在现有的函数基础上进行了修改,实现了动态内存管理,已使用中现场运行项目中,运行稳定,有需要的可以下载使用,有问题联系博主。

蝈蝈侠~

【C语言基础教程】内存的申请和释放(malloc、free、realloc、calloc)

C语言是一种强大的编程语言,但它也要求程序员手动管理内存。内存的申请和释放对于有效的资源管理和避免内存泄漏至关重要。在C语言中,有几个关键函数用于内存的动态分配和释放,包括malloc、free、realloc和calloc。本文将介绍为什么C语言需要内存的动态分配和释放,以及这些函数的概念、使用方法和示例代码。以上是关于内存的申请和释放在C语言中的基本介绍,以及malloc、free、realloc和calloc这四个关键函数的使用示例。

人才程序员

详解C语言用malloc函数申请二维动态数组的实例

主要介绍了详解C语言用malloc函数申请二维动态数组的实例的相关资料,希望通过本文能帮助到大家,需要的朋友可以参考下

weixin_38647517

C语言中多维数组的内存分配和释放(malloc与free)的方法

如果要给二维数组(m*n)分配空间,代码可以写成下面: 代码如下:char **a, i; // 先分配m个指针单元,注意是指针单元 // 所以每个单元的大小是sizeof(char *) a = (char **) malloc(m * sizeof(char * )); // 再分配n个字符单元, // 上面的m个指针单元指向这n个字符单元首地址 for(i = 0; i &lt; m; i++) a[i] = (char * )malloc(n * sizeof(char )); 释放应该是: 代码如下:int i; for(i=0;i&lt;m;i++)     free((void *)a[i

weixin_38705788

c++内存的动态申请与释放.pdf

c++内存的动态申请与释放 内存管理永远都是c++程序员应该关心的事

ggg564335
评论 20
收藏 已收藏
分享
返回顶部
brookmill
C语言 70,039 成员 243,237 内容