三种动态内存分配
2015-12-07 09:59
519 查看
分享几个例子,记住
1.calloc动态内存分配
#include<stdio.h>
#include <stdlib.h>
int main ()
{
int i,n;
int * pData;
printf ( "Amount of numbers to be entered: " );
scanf ( "%d",&i);
pData = ( int*) calloc (i,sizeof (int)); //i表示要开内存个数
if (pData==NULL)
exit (1);
for (n=0;n<i;n++)
{
printf ( "Enter number #%d: ",n);
scanf ( "%d",&pData
);
}
printf ( "You have entered: ");
for (n=0;n<i;n++) printf ( "%d ",pData
);
free (pData);
pData = NULL;
return 0;
}
2.malloc动态内存分配
/* malloc example: string 产生*/
#include <stdio.h>
#include <stdlib.h>
int main ()
{
int i,n;
char * buffer;
printf ( "How long do you want the string? " );
scanf ( "%d", &i);
buffer = ( char*) malloc (i+1);//i+1字符串末尾有“\0”
if (buffer==NULL) exit (1);
for (n=0; n<i; n++)
buffer
=rand()%26+ 'a';
buffer[i]= '\0';
printf ( "Random string: %s\n",buffer);
free (buffer);
buffer = NULL;//最好付空
return 0;
}
3.realloc动态分配内存
/* realloc example: 动态扩容*/
#include <stdio.h>
#include <stdlib.h>
int main ()
{
int input,n;
int count=0;
int * numbers = NULL;
int * more_numbers;
do {
printf ( "Enter an integer value (0 to end): " );
scanf ( "%d", &input);
count++;
//检查number大小,够就赋值过去,不够,重新分配,最后释放
more_numbers = ( int*) realloc (numbers, count * sizeof(int ));
if (more_numbers!=NULL) {
numbers=more_numbers;//改变指针指向
numbers[count-1]=input;//赋值
}
else {
free (numbers);//大空间分配失败,先释放空间,之后退出
puts ( "Error (re)allocating memory" );
exit (1);
}
} while (input!=0);
printf ( "Numbers entered: ");
for (n=0;n<count;n++) printf ( "%d ",numbers
);
free (numbers);//释放
return 0;
}
1.calloc动态内存分配
#include<stdio.h>
#include <stdlib.h>
int main ()
{
int i,n;
int * pData;
printf ( "Amount of numbers to be entered: " );
scanf ( "%d",&i);
pData = ( int*) calloc (i,sizeof (int)); //i表示要开内存个数
if (pData==NULL)
exit (1);
for (n=0;n<i;n++)
{
printf ( "Enter number #%d: ",n);
scanf ( "%d",&pData
);
}
printf ( "You have entered: ");
for (n=0;n<i;n++) printf ( "%d ",pData
);
free (pData);
pData = NULL;
return 0;
}
2.malloc动态内存分配
/* malloc example: string 产生*/
#include <stdio.h>
#include <stdlib.h>
int main ()
{
int i,n;
char * buffer;
printf ( "How long do you want the string? " );
scanf ( "%d", &i);
buffer = ( char*) malloc (i+1);//i+1字符串末尾有“\0”
if (buffer==NULL) exit (1);
for (n=0; n<i; n++)
buffer
=rand()%26+ 'a';
buffer[i]= '\0';
printf ( "Random string: %s\n",buffer);
free (buffer);
buffer = NULL;//最好付空
return 0;
}
3.realloc动态分配内存
/* realloc example: 动态扩容*/
#include <stdio.h>
#include <stdlib.h>
int main ()
{
int input,n;
int count=0;
int * numbers = NULL;
int * more_numbers;
do {
printf ( "Enter an integer value (0 to end): " );
scanf ( "%d", &input);
count++;
//检查number大小,够就赋值过去,不够,重新分配,最后释放
more_numbers = ( int*) realloc (numbers, count * sizeof(int ));
if (more_numbers!=NULL) {
numbers=more_numbers;//改变指针指向
numbers[count-1]=input;//赋值
}
else {
free (numbers);//大空间分配失败,先释放空间,之后退出
puts ( "Error (re)allocating memory" );
exit (1);
}
} while (input!=0);
printf ( "Numbers entered: ");
for (n=0;n<count;n++) printf ( "%d ",numbers
);
free (numbers);//释放
return 0;
}
相关文章推荐
- MPI_Probe-Dynamically allocate memory
- C和C++ 语言动态内存分配
- C/C++中的二维数组动态内存分配与释放
- 利用libjpeg库压缩成jpg图像,采用动态内存分配 /linux/c/c++
- C风格字符串动态分配和撤销内存报错的问题
- 输入一个长度未知的字符串,用动态分配内存的方法(C语言实现)
- realloc用法
- 动态分配内存(不限长度)
- 动态分配内存
- C/C++动态内存分配
- C++学习实战——通过动态分配内存打印杨辉三角
- 数据结构C语言版--动态顺序表的基本功能实现(二)
- 动态分配内存的原理
- Effective C++第三章-资源管理-1
- C++动态内存分配和使用vector创建数组对象
- 指针和动态分配内存 (不定长度数组)------新标准c++程序设计
- C++ Code:动态分配数组内存的六种方法
- 浅析C语言之内存分配函数malloc()、realloc()、calloc()
- 内存分配的两种方法
- C语言动态分配内存实例