| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 931 人关注过本帖
标题:帮我看下语法哪里错了,帮我改一下
只看楼主 加入收藏
不落夕阳
Rank: 2
等 级:论坛游民
帖 子:64
专家分:30
注 册:2016-10-13
结帖率:69.57%
收藏
已结贴  问题点数:10 回复次数:4 
帮我看下语法哪里错了,帮我改一下
#include<stdio.h>
main()
{
    int *p;
    p=(int*)malloc(1024*1024);
    printf("%d\n",*p);
}这是我在视屏里看到的一段代码,为什么我不能运行,下面是显示的错误:
D:\vc++6.0\MyProjects\病毒\large.cpp(5) : error C2065: 'malloc' : undeclared identifier
2016-11-04 11:08
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:4 
就不能按标准好好写代码

程序代码:
#include <stdio.h>
#include <stdlib.h>

int main( void )
{
    int* p = malloc(1024*1024);
    p[0] = 123;
    printf( "%d\n", *p );

    return 0;
}

2016-11-04 11:15
炎天
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:桃花岛
等 级:贵宾
威 望:29
帖 子:1218
专家分:4986
注 册:2016-9-15
收藏
得分:1 
回复 楼主 不落夕阳
少头文件 #include <stdlib.h>或#include<malloc.h>

早知做人那么辛苦!  当初不应该下凡
2016-11-04 11:32
StadyC
Rank: 6Rank: 6
等 级:侠之大者
威 望:6
帖 子:182
专家分:430
注 册:2016-10-13
收藏
得分:3 
少了stdlib.h或者malloc.h。还有,建议以后写代码malloc函数分配的空间要习惯用完之后要用free函数释放掉,你这个小程序还看不出啥问题,如果大型程序这个内存泄露会很严重。如果不使用free函数释放,那么要等程序结束以后,由操作系统释放,这是不好的习惯,举个例子:
#include<stdio.h>
#include<stdlib.h>

void GetMemory()
{
    int *p;
    p = (int *)malloc(sizeof(int) * 10000);
    ......;
}    //没有free

int main(void)
{
    int i = 0;
   
    while(i < 10000)
    {
        GetMemory();
        ++i;
    }    //这样调用的话,每次将会有4 * 10000字节的内存泄露,循环10000次,将会有10000 * 40000字节泄露

    return 0;
}




[此贴子已经被作者于2016-11-4 13:50编辑过]

2016-11-04 13:45
陈CDG
Rank: 2
等 级:论坛游民
帖 子:17
专家分:57
注 册:2016-4-11
收藏
得分:2 
使用malloc函数进行动态内存分配,必须先包含<malloc.h>这个头文件,否则无法调用malloc,还有动态内存分配后必须用free函数手动释放,否则会造成内存泄漏,p所指向的内存没有被初始化,你将会打印出一个垃圾数字,至于<stdlib.h>,如果你需要用exit的话就加进去
2016-11-04 14:17
快速回复:帮我看下语法哪里错了,帮我改一下
数据加载中...
 
   



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

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