假设我的程序中有以下代码:
char *ptr;
ptr=malloc(sizeof(char)*10);
ptr=malloc(sizeof(char)*10);
ptr=malloc(sizeof(char)*10);
ptr=malloc(sizeof(char)*10);
每次都会分配指向同一内存块的指针ptr
,还是每次都保留一块单独的内存并将其分配给的指针ptr
,导致每次malloc()
调用内存泄漏?
我仍在学习 C,如果它太基础,请多多包涵。我尝试谷歌搜索,但没有找到答案。
编辑::
感谢您的回答。请告诉我我的这种方法是否处理内存泄漏风险。我的程序只是询问 5 个人的姓名并显示它,而不使用静态数组。阅读您的答案后,我将free(ptr)
循环放入,否则在我计划只在循环外使用一次之前,在循环之后。我现在正确吗?
#include <stdio.h>
#include<stdlib.h>
#include<string.h>
int main ()
{
char *names[5],*ptr;
int i;
for(i=0;i<=4;i++)
{
ptr=malloc(sizeof(char)*10);
printf("Enter name no.%d : \n",i+1);
scanf("%s",ptr);
names[i]=malloc(strlen(ptr)+1);
strcpy(names[i],ptr);
free(ptr);
}
for(i=0;i<=4;i++)
printf("%s\n",names[i]);
}