c語言與內存
㈠ c語言中到變數與內存的關系
一個由C/C++編譯的程序佔用的內存分為以下幾個部分,
1、棧區(stack)— 由編譯器自動分配釋放 ,存放為運行函數而分配的局部變數、函數參數、返回數據、返回地址等。其操作方式類似於數據結構中的棧。
2、堆區(heap) — 一般由程序員分配釋放, 若程序員不釋放,程序結束時可能由OS回收 。分配方式類似於鏈表。
3、全局區(靜態區)(static)—存放全局變數、靜態數據、常量。程序結束後由系統釋放。
4、文字常量區 —常量字元串就是放在這里的。 程序結束後由系統釋放。
5、程序代碼區—存放函數體(類成員函數和全局函數)的二進制代碼。
C中,宏定義的常量並不會分配空間,而是在代碼預編譯時替換這個宏。而const修改的常量,需要根據這個常量定義而定,比如如果是全局數據則會在全局區分配空間,而局部數據會在棧區分配。
㈡ 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)='