| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 564 人关注过本帖
标题:求助!为什么free()函数后面定义的指针变量会出错
只看楼主 加入收藏
wy0058
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2015-5-14
结帖率:100%
收藏
已结贴  问题点数:2 回复次数:7 
求助!为什么free()函数后面定义的指针变量会出错
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
  char* p=(char*)malloc(10);
  
  free(p);
  int* k=NULL;
  return 0;
}
//编译不能通过
搜索更多相关主题的帖子: include return 
2015-11-07 15:01
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:2 
編譯不通過,你不會把編譯信息貼出來讓人看啊?

授人以渔,不授人以鱼。
2015-11-07 15:07
wy0058
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2015-5-14
收藏
得分:0 
回复 2楼 TonyDeng
error C2143: syntax error : missing ';' before 'type'
2015-11-07 15:09
wy0058
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2015-5-14
收藏
得分:0 
回复 2楼 TonyDeng
错误指向int* k那一行
2015-11-07 15:10
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
以下是引用wy0058在2015-11-7 15:09:29的发言:

error C2143: syntax error : missing ';' before 'type'

最舊的C語言法則是所有聲明語句必須放在函數的開始處。

授人以渔,不授人以鱼。
2015-11-07 15:11
wy0058
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2015-5-14
收藏
得分:0 
回复 2楼 TonyDeng
如果把int* k放在free()前则没有错误
2015-11-07 15:12
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
5樓答你了。

授人以渔,不授人以鱼。
2015-11-07 15:13
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
這不是放在free()後面出錯,而是聲明語句放在執行語句後面的語法錯。老舊的C語言就是這麽規定的,較新的C語言標準如C99允許把聲明語句放在執行語句之後,但並不是所有編譯器都支持這種標準,Microsoft的VC++編譯器在被强制爲C編譯器之後,就不支持這種語法。並非VC++不支持,而是VC++的C編譯器部分不支持,別説VC++6不支持,最新的VC++19也不支持。

[此贴子已经被作者于2015-11-7 15:23编辑过]


授人以渔,不授人以鱼。
2015-11-07 15:19
快速回复:求助!为什么free()函数后面定义的指针变量会出错
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.050587 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved