C语言指针申请与释放
生活随笔
收集整理的這篇文章主要介紹了
C语言指针申请与释放
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
C語言指針申請與釋放
- 指針申請內存空間
- 釋放內存空間
- 示例
指針申請內存空間
1)malloc()函數功能分配所需的內存空間,并返回一個指向它的指針。
void *malloc(size_t size);
size:內存塊的大小,以字節為單位。
2)calloc()函數功能分配所需的內存空間,并返回一個指向它的指針,且設置分配的內存為零。
void *calloc(size_t nitems, size_t size);
nitems:元素個數;
size:元素大小。
3)realloc()函數功能嘗試重新分配的已經申請的內存空間大小。
void *realloc(void *ptr, size_t size);
ptr:指針指向一個要重新分配內存的內存塊;
size:內存塊的新的大小,以字節為單位。
釋放內存空間
在程序運行完成之前,free函數釋放掉所申請的內存空間。
free()函數功能釋放之前調用calloc()、malloc()或realloc()所分配的內存空間。
void free(void *ptr);
ptr:指針指向一個要釋放內存的內存塊。
示例
1)malloc():
#include <stdio.h> #include <string.h> #include <stdlib.h>int main() {char *str;/* 最初的內存分配 */str = (char *) malloc(15);strcpy(str, "runoob");printf("String = %s, Address = %u\n", str, str);if(NULL != str){free(str);//避免指針問題(野指針)str = NULL;}return(0); }2)calloc()
#include <stdio.h> #include <stdlib.h>int main() {int i, n;int *a;printf("要輸入的元素個數:");scanf("%d",&n);a = (int*)calloc(n, sizeof(int));printf("輸入 %d 個數字:\n",n);for( i=0 ; i < n ; i++ ) {scanf("%d",&a[i]);}printf("輸入的數字為:");for( i=0 ; i < n ; i++ ) {printf("%d ",a[i]);}if(NULL != a){free(a);//避免指針問題(野指針)a= NULL;}return(0); }3)realloc()
#include <stdio.h> #include <stdlib.h> #include <string.h>int main() {char *str;/* 最初的內存分配 */str = (char *) malloc(15);strcpy(str, "runoob");printf("String = %s, Address = %p\n", str, str);/* 重新分配內存 */str = (char *) realloc(str, 25);strcat(str, ".com");printf("String = %s, Address = %p\n", str, str);if(NULL != str){free(str);//避免指針問題(野指針)str = NULL;}return(0); }總結
以上是生活随笔為你收集整理的C语言指针申请与释放的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 常用的工业控制计算机有哪几类,工业控制计
- 下一篇: InstallShield 2015 L