用malloc申请了一块内存,可不可以分批释放
姑且不说这么做有没有什么实际意义,先讨论一下会不会引起内存泄漏或者指针越界之类的问题?
以下的代码我用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函数申请二维动态数组的实例的相关资料,希望通过本文能帮助到大家,需要的朋友可以参考下
C语言中多维数组的内存分配和释放(malloc与free)的方法
如果要给二维数组(m*n)分配空间,代码可以写成下面: 代码如下:char **a, i; // 先分配m个指针单元,注意是指针单元 // 所以每个单元的大小是sizeof(char *) a = (char **) malloc(m * sizeof(char * )); // 再分配n个字符单元, // 上面的m个指针单元指向这n个字符单元首地址 for(i = 0; i < m; i++) a[i] = (char * )malloc(n * sizeof(char )); 释放应该是: 代码如下:int i; for(i=0;i<m;i++) free((void *)a[i
c++内存的动态申请与释放.pdf
c++内存的动态申请与释放 内存管理永远都是c++程序员应该关心的事


