c內存源碼
⑴ c語言內存怎麼回收和代碼是什麼
在C語言中,使用malloc來動態申請內存,申請完後必須釋放該空間。如果不手動釋放,那麼只能等程序運行結束後系統去回收,但在程序運行過程中容易造成內存溢出的問題,所以應該使用free(void*)來手動釋放申請的空間,這樣可以保證程序的健壯性。案例如下:x0dx0a #include "stdio.h"x0dx0a #include "stdlib.h"x0dx0a #include "string.h"x0dx0a void main()x0dx0a {x0dx0a //申請20個位元組空間x0dx0a char *str = (char*)malloc(20);x0dx0a //將空間內容設置為\0x0dx0a memset(str, '\0', 20);x0dx0a //為每個位元組空間賦值x0dx0a char *p = str;x0dx0a for (int i = 0; i < 10; i++)x0dx0a {x0dx0a *p++ = 'a' + i;x0dx0a }x0dx0a printf("str=%s\n",str);x0dx0a //釋放申請的空間,交回給系統x0dx0a free(str);x0dx0a }x0dx0a運行結果為:x0dx0astr=abcdefghijx0dx0aPress any key to continuex0dx0a x0dx0a這個案例很簡單,但也很能說明問題,我想應該對你幫助,呵呵。x0dx0a x0dx0a補充:在C++中,動態申請空間使用new方法(new方法底層調用的其實是malloc方法),釋放時使用delete方法(底層調用的是free)。
⑵ c語言 怎麼讀內存數據
分配內存空間然後讀取
#include<stdio.h>
#include<stdlib.h>
intfilelength(FILE*fp);
char*readfile(char*path);
intmain(void)
{
FILE*fp;
char*string;
string=readfile("c:/c.c");
printf("讀入完畢 按任意鍵釋放內存資源 ");
//printf("%s ",string);
system("pause");
return0;
}
char*readfile(char*path)
{
FILE*fp;
intlength;
char*ch;
if((fp=fopen(path,"r"))==NULL)
{
printf("openfile%serror. ",path);
exit(0);
}
length=filelength(fp);
ch=(char*)malloc(length);
fread(ch,length,1,fp);
*(ch+length-1)='