当前位置: 网站首页>网站建设>400电话办理

【网站优化】林芝公众号代运营公司【简单基础中小型网站】

发表日期: 2022-09-01 14:41:58 浏览次数:109

上往建站提供网站建设网站推广网店设计网站建设企业网站网站制作网页设计网站建设企业网站制作网页制作   高端定制网站建设H5页面设计开发微网站微信运营移动端设计开发手机端网站小程序,致力于苏州企业网站建设与公司网站制作,全国用户超10万,10余年的网站开发和建站经验,主营:网站建设网络推广微信公众号代运营、商城小程序开发定制网店设计等业务,专业团队服务,效果好。。

服务热线:400-111-6878 手机微信同号:18118153152(各城市商务人员可上门服务)

林芝公众号代运营公司

网站建设.png

当上面的代码被编译和执行时,它会产生下列结果:

Name = Zara AliDescription: Zara ali a DPS student in class 10th

上面的程序也可以使用 calloc() 来编写,只需要把 malloc 替换为 calloc 即可,如下所示:

calloc(200, sizeof(char));

当动态分配内存时,您有完全控制权,可以传递任何大小的值。而那些预先定义了大小的数组,一旦定义则无法改变大小。

重新调整内存的大小和释放内存

当程序退出时,操作系统会自动释放所有分配给程序的内存,但是,建议您在不需要内存时,都应该调用函数 free() 来释放内存。

或者,您可以通过调用函数 realloc() 来增加或减少已分配的内存块的大小。让我们使用 realloc() 和 free() 函数,再次查看上面的实例:

实例

#include <stdio.h>#include <stdlib.h>#include <string.h> int main(){   char name[100];   char *description;   strcpy(name, "Zara Ali");   /* 动态分配内存 */   description = (char *)malloc( 30 * sizeof(char) );   if( description == NULL )   {      fprintf(stderr, "Error - unable to allocate required memoryn");   }   else   {      strcpy( description, "Zara ali a DPS student.");   }   /* 假设您想要存储更大的描述信息 */   description = (char *) realloc( description, 100 * sizeof(char) );   if( description == NULL )   {      fprintf(stderr, "Error - unable to allocate required memoryn");   }   else   {      strcat( description, "She is in class 10th");   }     printf("Name = %sn", name );   printf("Description: %sn", description );   /* 使用 free() 函数释放内存 */   free(description);}

当上面的代码被编译和执行时,它会产生下列结果:

Name = Zara AliDescription: Zara ali a DPS student.She is in class 10th

您可以尝试一下不重新分配额外的内存,strcat() 函数会生成一个错误,因为存储 description 时可用的内存不足。


对于 void 指针,GNU 认为 void * 和 char * 一样,所以以下写法是正确的:


description = malloc( 200 * sizeof(char) );

但按照 ANSI(American National Standards Institute) 标准,需要对 void 指针进行强制转换,如下:


description = (char *)malloc( 200 * sizeof(char) );

同时,按照 ANSI(American National Standards Institute) 标准,不能对 void 指针进行算法操作:


void * pvoid;

pvoid++; //ANSI:错误

pvoid += 1; //ANSI:错误

// ANSI标准之所以这样认定,是因为它坚持:进行算法操作的指针必须是确定知道其指向数据类型大小的。


int *pint;

pint++; //ANSI:正确

更多内容参考:C 语言中 void* 详解及应用


长颈鹿

   长颈鹿


  pan***all@qq.com


   参考地址


4年前 (2018-09-01)

   Blithe


  cn1***0441251@126.com


   参考地址


12

对于我们手动分配的内存,在 C 语言中是不用强制转换类型的。


description = malloc( 200 * sizeof(char) ); // C 语言正确。

description = malloc( 200 * sizeof(char) ); // C++ 错误

但是 C++ 是强制要求的,不然会报错。


Blithe

   Blithe


  cn1***0441251@126.com


   参考地址


4年前 (2019-01-24)

   L.~


  wyl***6@163.com


48

动态可变长的结构体:


typedef struct

{

  int id;

  char name[0];

}stu_t;

定义该结构体,只占用4字节的内存,name不占用内存。


stu_t *s = NULL;    //定义一个结构体指针

s = malloc(sizeof(*s) + 100);//sizeof(*s)获取的是4,但加上了100,4字节给id成员使用,100字节是属于name成员的

s->id = 1010;

strcpy(s->name,"hello");

注意:一个结构体中只能有一个可变长的成员,并且该成员必须是最后一个成员。


L.~

   L.~


  wyl***6@163.com


3年前 (2019-08-20)

   ddddddd


  442***286@qq.com


9

直接使用原来的指针变量接收 realloc 的返回值是可能存在内存泄漏的。例如以下语句:


description = (char *) realloc( description, 100 * sizeof(char) );

若 realloc 函数执行失败,description 原先所指向的空间不变,realloc 函数返回 NULL。


此时 description 的值被赋为 NULL, 但原先指向的空间未被释放,造成了内存泄漏。


ddddddd

   ddddddd


  442***286@qq.com


5个月前 (04-09)

   ddd


  266***3172@qq.com


2

1.stdlib.h中的几个函数操作内存;calloc()分配指定个数指定大小的连续内存块,返回值是这些连续内存块组成的大内存块地址;malloc()分配指定大小的一块内存,返回值是内存的地址;realloc()通过已分配的内存块的地址扩展或者减小内存的大小;free()释放指定地址对应的内存块,无返回值;alloc是allocate 分配的缩写;malloc mess+allocate 整块的分配


2.stdlib中几个内存管理的函数返回值是 void *,表示任意类型的指针,或者说它可以转化成任意类型;


3.内存管理的意义:数组、基本数据类型、结构体、共用体都是固定的为数据分配内存空间,而内存管理却可以直接申请一块内存,然后给其指定存储的数据类型,之后就可以存储数据了,且还可以根据数据的大小来扩展内存空间;


ddd

   ddd


  266***3172@qq.com


3个月前 (05-22)


林芝公众号代运营公司


上往建站提供微信小程序+公众号商城+企业网站建设一站式微信网站商城营销系统,微信小程序是一种依附于微信体内即点即用,无需下载安装即可使用的轻应用,它开启了移动端“触手可及”的梦想,致力于苏州企业网站建设与公司网站制作,全国用户超10万,10余年的网站开发和建站经验,主营:网站建设微信公众号代运营商城小程序开发定制网店设计等业务,专业团队服务,效果好。

服务热线:400-111-6878 手机微信同号:18118153152(各城市商务人员可上门服务)


400-111-6878
服务热线
顶部

备案号: 苏ICP备2021016738号-6

CopyRight © 2021 上往建站 All Right Reserved 未经许可不得复制转载

24小时服务热线:400-111-6878   E-MAIL:1120768800@qq.com   QQ:1120768800

  网址: https://www.768800.club  网站建设上往建站

关键词: 网站建设| 域名邮箱| 服务器空间| 网站推广| 上往建站| 网站制作| 网站设计| 域名注册| 网络营销| 网站维护|

企业邮箱| 虚拟主机| 网络建站| 网站服务| 网页设计| 网店美工设计| 网站定制| 企业建站| 网站设计制作| 网页制作公司|

400电话办理| 书生商友软件|

预约专家

欢迎您免费咨询,请填写以下信息,我们收到后会尽快与您联系

  

全国服务热线:400-111-6878