malloc函数问题

来源:百度知道 编辑:UC知道 时间:2024/06/14 01:11:48
请问 Stack S=malloc(sizeof *S)这样是分配一个多大的空间
其中的 "sizeof "和 "*"号 和" S"各有什么意义吗?

S→data=malloc(size*sizeof(StackItem)) 这又是什么意思?

我是初学,而且是自学,希望大家用比较好理解的话告诉我

void *malloc( size_t size ); malloc函数原型

sizeof为运算符 它的格式为 sizeof(里面为任意类型)

sizeof运算后的值为size_t类型

Stack S=malloc(sizeof *S);这里sizeof *S没见过

如果是这样就可以Stack *S=(Stack *)malloc(sizeof(Stack));

意思为申请了一Stack类型大小的内存空间,把首地赋给S

这样也可以long*S=(long*)malloc(sizeof(Stack *));

意思为申请了一Stack指针类型大小的内存空间,把首地赋给S

我们知道指针变量的大小都为4所以有sizeof(任意类型的指针)

它的值都为4,它的作用就是申请了4个字节大小的内存空间把它的

首地赋给long类型指针,其实就是动态创建了一long类型

其实在这里你只要知道malloc函数的作用和原型,理解这个就不困难

在来贴个仿malloc函数的活用

#include "stdafx.h"

#include "stdlib.h"

#include "string"

#include "stdio.h"

int main(int argc, char* argv[])
{

double d[80];//在这里我把这个只当做了80*8个字节的内存空间大小

double *t=d;

char *s=(char *)t;

strcpy(s,"11515615156156156165156");

640个字节大小空间来装这么小的字符串小菜一碟
printf