当前位置: 技术问答>linux和unix
有关于linux 内存泄露的问题
来源: 互联网 发布时间:2016-05-24
本文导语: 请教:LINUX下fork一个子进程以前,父进程如果malloc一段内存,那么父进程与子进程按道理应该分别free掉堆上分配的内存,否则会造成内存泄漏。但是如下面的程序所示,为什么我在父进程与子进程分别打印指向堆内...
请教:LINUX下fork一个子进程以前,父进程如果malloc一段内存,那么父进程与子进程按道理应该分别free掉堆上分配的内存,否则会造成内存泄漏。但是如下面的程序所示,为什么我在父进程与子进程分别打印指向堆内存的指针,怎么都是指向同一个地址?还一个问题,fork函数如何保证子进程能成功继承父进程的堆栈?假如父进程malloc成功了,但是fork子进程的时候,malloc失败怎么办? 是不是fork函数直接报错?那我如何显式的知道是子进程的malloc出了问题呢?
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include "restart.h"
int main(){
pid_t pid;
int i;
char *p;
p = (char *)malloc(sizeof(char)*10000);
memset(p,0,sizeof(char)*10000);
sprintf(p,"%s","hello test~");
fprintf(stderr, "father's point p address:%xn",p);
if(!p) exit(-1);
pid = fork();
if(pid
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include "restart.h"
int main(){
pid_t pid;
int i;
char *p;
p = (char *)malloc(sizeof(char)*10000);
memset(p,0,sizeof(char)*10000);
sprintf(p,"%s","hello test~");
fprintf(stderr, "father's point p address:%xn",p);
if(!p) exit(-1);
pid = fork();
if(pid
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。