2 u011000097 u011000097 于 2014.10.17 09:21 提问

c语言动态内存分配问题

我去杭州海康威视笔试和面试被问的原题:
没有改动一个字符,
5.以下程序有什么问题,请指出。
char * getMem()
{
char *p=malloc(100);
return p;
}
int main(void)
{
char *p = getMem();
spintf(p,"hello");
free(p);
}

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
C和指针之动态内存分配常见问题和总结
1、动态内存分配常见问题       1) 结构体成员指针未初始化       2)为指针分配内存太小       3)内存分配成功,但是没初始化       4)内存越界,内存泄漏,free多次或者释放之后没有设置为NULL 2、测试代码 #include #include #include //结构体成员指针需要初始化 struct studen
动态内存分配的C代码示例
之前有同学在QQ上问我,C语言中的动态内存分配是怎么回事。首先,我们来看看内存分配的概念,它是指在程序执行的过程中分配或者回收存储空间的方法。一般说来,内存分配方法分为静态内存分配和动态内存分配两种。在本文中,我们主要讨论动态内存分配。
链表的C语言实现之动态内存分配(转载)
作者: 杜红超 何青青一、为什么用动态内存分配  但我们未学习链表的时候,如果要存储数量比较多的同类型或同结构的数据的时候,总是使用一个数组。比如说我们要存储一个班级学生的某科分数,总是定义一个float型(存在0.5分)数组:float score[30];  但是,在使用数组的时候,总有一个问题困扰着我们:数组应该有多大?  在很多的情况下,你并不能确定要使用多大的数组,比如上例,你可能并不知
C语言中手把手教你动态内存分配
C语言中手把手教你动态内存分配动态内存分配常见的内存分配的错误先上一个内存分配的思维导图:便于联想想象,理解: 首先我们介绍一下内存分配的方式:1:在静态存储区域中进行分配 内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,static变量 2:在栈中进行分配 在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时,这些
简述C语言动态、静态内存分配
#include #include /** c语言静态内存分配 */ void func(int** address ) { //定义int类型的i变量,并赋值100 int i = 100; //把i对应的地址赋值给iPoint变量 *address = &i; } int main(int argc, char *argv[]) { //定义int类型的一级指针变量iPoin
C语言之动态分配内存
首先,我们应该知道,所有的程序都必须留出足够的内存空间来存储所使用的数据,所以我们经常会预先给程序开辟好内存空间,然后进行操作,但其实还有一种选择,能够让内存分配自动进行下去。对于传统数组,会遇到这样的问题:int arr[5] ;对这个数组我们在定义的时候必须给提前开辟好空间,并且在程序执行的过程中,这个开辟的内存空间是一直存在的,除非等到这个函数执行完毕,才会将空间释放。还有一个问题就是这个数组
C语言基础之动态内存分配(附代码演示)
C语言中的动态内存分配需要用到malloc和free两个函数。malloc和free 动态分配内存可以在程序运行的时候决定需要分配多少个存储区,为了使用动态分配内存需要使用一组标准函数malloc和free,为了使用这些标准函数需要包含stdlib.h头文件。 演示代码1: 该段代码主要是掩演示了如何使用malloc函数动态分配内存,然后用申请到的内存存储数据,使用完之后及时的销毁动态分配
动态内存分配(malloc colloc realloc free)
malloc和freemalloc是C语言库提供用于动态内存分配的函数,而free用于释放所分配的内存。 他们所包含在stdlib.h中,原型是:void *malloc(size_t size) void free(void *pointer)malloc的参数就是需要分配的内存字节数。如果内存池中的可用内存可以满足这个需求,malloc就返回一个指向被分配的内存块起始指针所指向的位置。 如果
数据结构基础(1)--数组C语言实现--动态内存分配
数组
嵌入式程序设计动态内存和静态内存的方案选择
在网上看到很多关于在嵌入式上是否使用动态内存及如何应对内存碎片的文章,我在进行嵌入式程序设计时也老在纠结这个问题。    内存碎片是由动态内存分配造成的,经过频繁的动态分配和释放后,在很多内存段上会出现两个已经被分配的内存快之间有一段很小的空闲内存的情况,这些小的空闲内存就是所为的碎片。     因为这些小内存并不连续而且小到无法或者很难再被利用起来,所以会导致本来系统有空闲的内存但应用程序确