面试的问题 及回答

1、Postmessage 与 SendMessage的区别

  PostMessage该函数将一个消息放入(寄送)到与指定窗口创建的线程相联系消息队列里,不等待线程处理消息就返回,是异步消息模式。消息队列里的消息通过调用GetMessage和PeekMessage取得

  SendMessage该函数将指定的消息发送到一个或多个窗口。此函数为指定的窗口调用窗口程序,直到窗口程序处理完消息再返回,SendMessage函数返回值为消息处理结果。

2、在一个动态链接库中new的内存能在另一个动态链接库中释放吗?

  当一个应用程序初始化的时候,首先被初始化的是C Run-Time Library,然后才是应用程序的入口函数,而Heap对象就是在C Run-Time Library被初始化的时候被创建的。

      对于动态链接的C Run-Time Library,运行库只被初始化一次,而对于静态连接的运行库,每链接一次就初始化一次,所以对于每个静态链接的运行库都拥有彼此不同的Heap 对象。这样在某种情况下就会出问题,导致程序崩溃,例如一个应用程序调用了多个DLL,除了一个DLL外,其他的DLL,包括应用程序本身动态连接运行 库,这样他们就使用同一个Heap对象。而有一个DLL使用静态连接的运行库,它就拥有一个和其他DLL不同的Heap 对象,当在其他DLL中分配的内存在这个DLL中释放时,问题就出现了。

3、几个内存问题

题一·:

void GetMemory( char *p )
{p = (char *) malloc( 100 );   
}
void Test( void )
{char *str = NULL;GetMemory( str );strcpy( str, "hello world" );printf( str );
}

  该题传入的形参是实参本身,而不是取地址,传入的形参在函数内部改变时并不能真正改变传入形参的值,执行完GetMemory(str)函数后,str依然为NULL.

题二

char *GetMemory( void )
{char p[] = "hello world";return p;  }
void Test( void )
{char *str = NULL;str = GetMemory();printf( str );
}

   运行完str=GetMemory()时,str的值还是正确的,但是执行printf(str)时,printf内部的三个变量覆盖了str原有的直,网上解释为,p为局部变量,调用完GetMemery()后,P指向的内存释放,即str指向内存释放,所以打印的为不确定乱码

题三

 void GetMemory( char **p, int num )
{*p = (char *) malloc( num );  
}
void Test( void )
{char *str = NULL;GetMemory( &str, 100 );strcpy( str, "hello" );printf( str );
}

   能够成功,但最好加上判断是否申请内存成功。

题四

void Test( void )
{
  char *str = (char *) malloc( 100 );strcpy( str, "hello" );free( str );
  if(NULL != str)
  {
    strcpy(str, "123456");
    printf(str);
  }
}

 

  free()后应将str置为NULL,,不置为空,if内部操作的为野指针,会出现崩溃问题。。

 

转载于:https://www.cnblogs.com/fenglangxiaotian/p/9445283.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/266360.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

伪静态隐藏域名后缀_你想知道的动态URL、静态URl、伪静态URL概念及区别都在这里!...

【小宅按】我们说url的动态、静态、伪静态三种形式,其实从严格分类上来说,伪静态也是动态的一种,只是表现形式为静态。参考:动态url、静态url和伪静态url的详细讲解 - 好文分享动态URl动态页面的特征1、以ASP、PHP、JSP、ASP.NET …

700多位老人的“智慧”养老记

“智慧”养老,受益的不只是居住养老公寓的老年人,养老机构本身也受益匪浅。 2012年12月,由汇晨养老公司机构管理有限公司(简称汇晨养老公司)与NEC中国共同开发的智能老年公寓信息化系统投入运行,生活在北京昌平区北七家汇晨老年公…

java清理语句,java – 如何在不使用准备语句的情况下对SQL进行清理

对,准备好的语句查询参数只能在您使用单个文字值的地方使用.您不能对表名,列名,值列表或任何其他SQL语法使用参数.所以你必须将你的应用程序变量插入到SQL字符串中,并引用相应的字符串.请使用引号来定界您的表名标识符,并将引号字符串加倍排列:java.sql.DatabaseMet…

【NOIP模拟】图论题Graph

题面 n点2n-2条有向边&#xff0c;数据先给一颗1为根的生成树边集&#xff0c;边目录按两部分给出 1、 开始的 n-1 条边描述了一颗以 1 号点为根的生成树&#xff0c;即每个点都可以由 1 号点 到达。 2、 接下来的 N-1 条边&#xff0c;一定是从 i 到 1&#xff08;2<i<N…

全国计算机等级考试题库二级C操作题100套(第56套)

第56套&#xff1a; 给定程序的功能是&#xff1a;从键盘输入若干行文本&#xff08;每行不超过80个字符&#xff09;&#xff0c;写到文件myfile4.txt中,用-1作为字符串输入结束的标志。然后将文件的内容读出显示在屏幕上。文件的读写分别由自定义函数ReadText和WriteText实现…

docker 安装nginx_docker安装nginx搭建简单文件共享服务

使用nginx开启目录浏览功能&#xff0c;实现简单的http文件共享服务。一、 首先拉取nginx镜像&#xff0c;我使用的是arm32v7/nginx镜像。docker pull arm32v7/nginx二、运行一个临时的nginx实例&#xff0c;复制容器内的nginx.conf配置文件到主机上docker run --name tmp-ngin…

java _web之Servlet简单应用

Servlet是一种独立于平台和协议的服务器端的Java应用程序&#xff0c;可以生成动态的web页面。它担当Web浏览器或其他http客户程序发出请求、与http服务器上的数据库或应用程序之间交互的中间层。 所谓动态网页&#xff0c;就是在不同时刻或不同条件下访问Web服务器上的同一个页…

BZOJ4516: [Sdoi2016]生成魔咒

BZOJ4516: [Sdoi2016]生成魔咒 Description 魔咒串由许多魔咒字符组成&#xff0c;魔咒字符可以用数字表示。例如可以将魔咒字符 1、2 拼凑起来形成一个魔咒串 [1,2]。一个魔咒串 S 的非空字串被称为魔咒串 S 的生成魔咒。例如 S[1,2,1] 时&#xff0c;它的生成魔咒有 [1]、[2]…

matlab画泡面图,MATLAB中,( )函数可以保存图像并指定为图像文件格式。

The word "tunnel visioned "(Para 3, Line 2) most probably means______ .[解析] 男&#xff1a;简直不敢相信&#xff0c;我通过了所有考试。 女&#xff1a;被我说中了吧&#xff0c;看看你前几天&#xff0c;不是晚上失眠就是白天在屋子里走来走去的&#xff0c…

全国计算机等级考试题库二级C操作题100套(第57套)

第57套&#xff1a; 函数fun的功能是&#xff1a;把形参a所指数组中的最小值放在元素a[0]中&#xff0c;接着把 形参a所指数组中的最大值放在a[1]元素中&#xff1b;再把a所指数组元素中的次小值放 在a[2]中&#xff0c;把a所指数组元素中的次大值放在a[3]&#xff1b;其余以此…

mysql redis hbase_MySQL之基本介绍

MySQL基本介绍在学习任何一款编程语言的过程中&#xff0c;我们会发现如果我们想要存储一些数据到本地硬盘的时候无疑是有些麻烦的。今天&#xff0c;我们就学一个和储存数据有关的数据库管理系统——MySQL。为啥要学会使用数据库呢&#xff1f;因为数据库可以方便的将数据存放…

POJ-1556 The Doors 线段相交+最短路

题意&#xff1a;在一个矩形平面内&#xff0c;有若干道墙&#xff0c;现求从左部某一点到右部某一点的最短路径。 解法&#xff1a;有一个事实是线路一定是从门两边的点上通过的&#xff0c;不可能出现从中间穿过的可能。因此我们就枚举两两点之间是否可达&#xff0c;这里就要…

【matlab】Matlab三维绘图指南

Matlab是一种强大的数学计算和可视化工具,而三维绘图是其功能之一。通过Matlab的三维绘图功能,我们可以创建精美、直观的三维图形,展示和分析复杂的数据。本文将为您提供一份简明的Matlab三维绘图指南,帮助您快速上手并创建出令人印象深刻的三维图形。 准备数据在开始绘制三…

laravel mysql视图,在 Laravel 视图文件中引入 bootstrap

如何在 Laravel 视图文件中引入 bootstrap&#xff1f;对于从来没有接触过 PHP 开发框架的菜鸟来说&#xff0c;这确实是个问题。在我们这些菜鸟传统的认知里&#xff0c;要在一个 html/php 文件里引入一个外部 css 文件&#xff0c;link 标签 href 属性的值&#xff0c;应该填…

全国计算机等级考试题库二级C操作题100套(第58套)

第58套&#xff1a; 给定程序中&#xff0c;函数fun的功能是&#xff1a;把形参s所指字符串中最右边的n个字符复制 到形参t所指字符数组中&#xff0c;形成一个新串。若s所指字符串的长度小于n&#xff0c;则将整个 字符串复制到形参t所指字符数组中。例如&#xff0c;形参s所…

linux mysql 修改root密码_Mac下重置mysql的root密码

php中文网最新课程每日17点准时技术干货分享我的mysql版本 MYSQL V5.7.9&#xff0c;旧版本请使用&#xff1a;UPDATE mysql.user SET PasswordPASSWORD(新密码) WHERE Userroot;Mac OS X - 重置 MySQL Root密码密码太多记不住&#xff1f;&#xff1f;你是否忘记了Mac OS 的My…

DHCP option 150与option 66的区别

转载于:https://blog.51cto.com/jaymimijay/1150777

全国计算机等级考试题库二级C操作题100套(第59套)

第59套&#xff1a; 给定程序中&#xff0c;函数fun的功能是&#xff1a;在34的矩阵中找出在行上最大、在列上最小的那个元素&#xff0c;若没有符合条件的元素则输出相应信息。 例如&#xff0c;有下列矩阵&#xff1a; 1 2 13 4 7 8 10 6 3 5 9 7 程序执行结果为&#xff1a…

python期末知识点_史上最全的Python知识点整理之基本语法

一、程序的格式框架 1.缩进 缩进是指每行语句前的空白区域&#xff0c;用来表示Python程序间的包含和层次关系。 一般语句不需要缩进&#xff0c;顶行书写且不留空白。 当表示分支、循环、函数、类等含义&#xff0c;在if&#xff0c;while&#xff0c;for&#xff0c;def&…

升降压斩波电路matlab,升降压直流斩波电路及matlab仿真.doc

升降压直流斩波电路及matlab仿真目录绪论………………………………………………………………….3降压斩波电路…………………………………………………..6直流斩波电路工作原理及输出输入关系……………12D c&#xff0f;D C变换器的设计…………………………………………18测试…