`
lianxiangbus
  • 浏览: 529900 次
文章分类
社区版块
存档分类
最新评论

函数调用 与 内存分配

 
阅读更多

参考文献:http://wenku.baidu.com/view/02986b4fe518964bcf847c79.html

用指针作为参数,在函数内部申请动态内存,结果改程序会崩溃。要想在函数调用中使用动态内存分配,必须使用二重指针。

错误:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void test(char *ps)
{
ps=(char *)malloc(10*sizeof(char));
}
int main()
{
char *str=NULL;
test(str);
strcpy(str,"abcd");
printf("%s",str);
return 0;
}

改正:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void test(char **ps)
{
*ps=(char *)malloc(10*sizeof(char));
}
int main()
{
char *str=NULL;
test(&str);
strcpy(str,"abcd");
printf("%s",str);
return 0;
}

分享到:
评论

相关推荐

    C++函数的内存分配机制

    C++函数的内存分配机制.txtC++函数的内存分配机制.txtC++函数的内存分配机制.txt

    C/C++ 函数调用与函数返回值

    函数参数与函数调用  1、函数调用的作用:  ·用实参数向形式参数传递数据;  ·为获得数据参数及在函数体中声明的变量分配存储空间;  ·中断现行(调用)函数,把流程向被调用函数的入口处,开始执行被调...

    《对话框》之《内存分配方式和调试机制》

    1. 内存分配函数 MFCWin32或者C语言的内存分配API,有四种内存分配API可供使用。 1. Win32的堆分配函数 每一个进程都可以使用堆分配函数创建一个私有的堆──调用进程地址空间的一个或者多个页面。DLL创建的私有堆...

    函数调用与堆栈

    自动生存期:局部变量和函数形参一般都具有自动生存期,它们的内存空间在程序执行到定义它们的复合语句(包括函数体)时才分配,当定义它们的复合语句执行结束时内存被收回。 动态生存期:具有动态生存期的变量的生存...

    基于C++内存分配、函数调用与返回值的深入分析

    本篇文章是对C++中的内存分配、函数调用与返回值进行了详细的分析介绍,需要的朋友参考下

    C语言函数以及函数的调用.ppt

    c 语言函数 函数调用 实参可以是常量、变量或表达式,它们都必须有确定的值 形参必须指定类型 形参与实参类型顺序一致,个数相同 形参在函数被调用前不占内存;函数调用时为形参分配内存;调用结束,内存释放

    C++之python函数调用

    C++之python函数调用 习惯C++的内存分配释放,突然间不用释放,感觉很蹊跷,上网查发现也没有释放函数。如果真这样的话,是很可怕的,因为无法自己管理内存,但是我相信编译器作者的垃圾回收机制,所以OK,不管!...

    内存分配情况了解

    在开发软件的过程中,经常会碰到不同用户的PC系统配置不一样。...这样就需要了解系统的配置信息了,最重要的资源之一内存,就是最需要了解的,需要调用函数GlobalMemoryStatusEx来了解内存的分配情况。

    E语言远程调用函数源码

    线程首址 = _分配内存 (进程句柄, 0, 汇编长度, 4096, 64) .' 如果真 (线程首址 = 0) ' _释放内存 (进程句柄, 线程首址, 4096, 16384) ' 0, 32768 ' 返回 (-2) .如果真结束 .' 如果真 (_内存写字节集 (进程句柄,...

    EDA/PLD中的C/C++ 函数调用与函数返回值

    函数参数与函数调用  1、函数调用的作用:  ·用实参数向形式参数传递数据;  ·为获得数据参数及在函数体中声明的变量分配存储空间;  ·中断现行(调用)函数,把流程向被调用函数的入口处,开始执行被调...

    C++动态内存分配(new/new[]和delete/delete[])详解

    当然,C已提供了动态内存分配函数malloc( )和free( ),以及malloc( )的变种(realloc:改变分配内存的大小,calloc:指针指向内存前初始化),这些函数在运行时从堆中(也称自由内存)分配存储单元,但是运用这些库函数...

    C语言程序设计-函数参数和返回值.pptx

    形参变量只有在被调用时才分配内存单元,在调用结束时,即刻释放所分配的内存单元。因此,形参只有在函数内部有效。函数调用结束返回主调函数后则不能再使用该形参变量。 实参可以是常量、变量、表达式、函数等,...

    C++ 中继承与动态内存分配的详解

    C++ 中继承与动态内存分配的详解 继承是怎样与动态内存分配进行互动的呢?例如,如果基类使用动态内存分配,并重新定义赋值和复制构造函数,这将怎样影响派生类的实现呢?这个问题的答案取决于派生类的属性。如果派生...

    函数、内存、一维数组、二维数组

    Java程序在运行时,需要在内存中的分配空间。为了提高运算效率,有对空间进行了不同区域的划分,因 为每一片区域都有特定的处理数据方式和内存管理方式。 栈内存  用于存储局部变量,当数据使用完,所占空间会...

    c++结构体string无法用malloc分配内存

    c++结构体string无法用malloc分配内存,需要用用new来分配内存,malloc不会调用结构函数,结构体内的string不定长,不能动态分配内存。

    论述含参数的宏与函数的优缺点

    1.函数调用时,先求出实参表达式的值,然后带入形参。...2.函数调用是在程序运行时处理的,分配临时的内存单元;而宏展开则是在编译时进行的,在展开时并不分配内存单元,不进行值的传递处理,也没有“返回值”的概念

    (转)多重继承下的虚函数表

    这样,在有虚函数的类的实例中这个表被分配在了这个实例的内存中,所以,当我们用父类的指针来操作一个子类的时候,VFTable就显得尤为重要了,它就像一个地图一样,指明了实际所应该调用的函数。在C++的标准中提到,...

    内存管理内存管理内存管理

    在大部分操作系统中,内存分配由以下两个简单的函数来处理: void *malloc(long numbytes):该函数负责分配 numbytes 大小的内存,并返回指向第一个字节的指针。 void free(void *firstbyte):如果给定一个由...

    C语言函数库手册 按函数功能快速查询

    void abort() 此函数通过调用具有出口代码3 的_exit 写一个终止信息于stderr,并异常终止程序。无返回值 int exec…装入和运行其它程序 ...... 转换子程序,函数库为math.h、stdlib.h、ctype.h、float.h char *ecvt...

Global site tag (gtag.js) - Google Analytics