小编use*_*968的帖子

基本堆栈中的内存泄漏

我正在研究一个真正简单的堆栈实现,我似乎无法弄清楚为什么我有内存泄漏.我对代码的期望是在push()中分配了5个节点,在displayAndDestroy()中释放了5个节点.但是Valgrind说我已经分配了6个节点的数据并且只释放了5个.我一直在盯着这个,我不确定我哪里出错了.


#include <stdio.h>
#include <stdlib.h>
#include <string.h>

typedef struct STACK{
    char data[100];
    struct STACK *next;
} stack;

stack *push( stack *oldTop, char *data )
{
    stack *newTop = malloc(sizeof(stack));
    newTop->next = oldTop;

    if(!data){
        strcpy(newTop->data, newTop->next->data);
    } else{
        strcpy(newTop->data, data);
    }

    return( newTop );
}

void displayAndDestroy( stack *top )
{
    stack *currentTop = top;
    stack *temp;

    int i=0;
    while(currentTop){

        printf("stack%d: %s\n", i, currentTop->data );

        temp = currentTop->next;
        free(currentTop);
        currentTop = temp;

        i++;
    }
}

stack *initializer( stack *top, char *fileName …
Run Code Online (Sandbox Code Playgroud)

c stack

0
推荐指数
1
解决办法
125
查看次数

标签 统计

c ×1

stack ×1