代码: 全选
#include<stdio.h>
#include<malloc.h>
#include<unistd.h>
#include<alloca.h>
extern void afunc(void)
extern etext,edata,end;
int bss_var; //未初始化全局变量
int data_var=42; //初始化全局变量存储在数据区
#define SHW_ADR(ID,I) printf("the %8s\t is at adr:%8x\n",ID,&I);//打印地址区
int main(int argc,char *argv[])
{
char *p,*b,*nb;
printf("Adr etext:%8x\t Adr edata %8x\t Adr end %8x\t\n",&etext,&edata,&end);
printf("\ntext Location:\n");
SHW_ADR("main",main);
SHW_ADR("afunc",afunc);
printf("\nbss Location:\n");
SHW_ADR("bss_var",bss_var);
printf("\ndata Location:\n");
afunc();
p=(char* )alloca(32);
if(p!=NULL)
{
SHW_ADR("start",p);
SHW_ADR("end",p+31);
}
b=(char *)malloc(32*sizeof(char));
nb=(char *)malloc(16*sizeof(char));
printf("\nHeap Locations:\n");
printf("the Heap start:%p\n",b);
printf("the Heap end:%p\n",(nb+16*sizeof(char)));
printf("\nb and nb in stack\n");
SHWADR("b",b);
SHWADR("nb",nb);
free(b);
free(nb);
}
void afunc(void)
{
static long int level=0; //静态数据存储在数据段
int stack_var;
if(++level==5)
{
return;
}
printf("stack_var is at:%P\n",&stack_var);
afunc();
}
mem_add.c: 在函数‘afunc’中:
mem_add.c:7: 错误: 为形参‘etext’指定了存储类
mem_add.c:7: 错误: 为形参‘edata’指定了存储类
mem_add.c:7: 错误: 为形参‘end’指定了存储类
mem_add.c:10: 错误: 形参‘data_var’已初始化
mem_add.c:14: 错误: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘{’ token
mem_add.c:43: 错误: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘{’ token
mem_add.c:52: 错误: 原型函数定义中使用了旧式参数声明
mem_add.c:52: 错误: expected ‘{’ at end of input
望高手帮帮解决下,谢谢!