C 在将一个指针分配给另一个指针之前,是否需要分配内存?
我试图理解两件事。覆盖malloced内存意味着什么。由于我正在将B分配给A,以下内容是否会被视为覆盖。是否确实需要为B分配内存?。如果有人这样做,这被认为是一种不好的做法吗C 在将一个指针分配给另一个指针之前,是否需要分配内存?,c,C,我试图理解两件事。覆盖malloced内存意味着什么。由于我正在将B分配给A,以下内容是否会被视为覆盖。是否确实需要为B分配内存?。如果有人这样做,这被认为是一种不好的做法吗 #include <stdio.h> #include <stdlib.h> int main() { typedef struct { int data; }somestruct; somestruct *A,*B; A = malloc(si
#include <stdio.h>
#include <stdlib.h>
int main()
{
typedef struct {
int data;
}somestruct;
somestruct *A,*B;
A = malloc(sizeof(somestruct));
B = malloc(sizeof(somestruct));
B = A;
return 0;
}
#包括
#包括
int main()
{
类型定义结构{
int数据;
}somestruct;
somestruct*A,*B;
A=malloc(sizeof(somestruct));
B=malloc(sizeof(somestruct));
B=A;
返回0;
}
考虑这段代码。将a的值分配给b时是否覆盖内存。在本例中,我必须为b分配内存,这与前一种情况不同,在这种情况下,如果我不为b分配内存,代码就会工作。有人能解释一下吗。我正在改写这里的记忆。2.在分配(等于)一个指针到另一个指针时,总是需要为两个指针分配内存
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i=0;
int *a=malloc(sizeof(int)*10);
int *b=malloc(sizeof(int)*10);
for(i=0;i<10;i++){
a[i]=1;
}
for(i=0;i<10;i++){
b[i]=a[i];
printf("%d\n",b[i]);
}
return 0;
}
#包括
#包括
int main()
{
int i=0;
int*a=malloc(sizeof(int)*10);
int*b=malloc(sizeof(int)*10);
对于(i=0;iNo),它不是必需的。您不应该导致内存泄漏
不要忘记free()
通过malloc()
创建的所有内容
#包括
#包括
内部主(空)
{
类型定义结构{
int数据;
}somestruct;
somestruct*A,*B;
A=malloc(sizeof(somestruct));
/*不要这样做,因为这会导致内存泄漏*/
/*B=malloc(sizeof(somestruct))*/
B=A;
释放(A);/*别忘了释放内存*/
返回0;
}
在第二个代码中,您使用的两个缓冲区的地址都分配给a
和b
,因此这两个malloc()
都是必需的。同样,不要忘了free()
在第一个示例中通过malloc()
!创建的所有内容:不需要为b使用malloc内存。
下一条语句指向为A分配的内存。
两个指针指向内存中的同一位置是完全正常的
在第二种情况下:这是有意义的。您将值从分配给A的内存复制到分配给B的内存。事实上,绝对不是,将内存分配给B(然后通过将A分配给B而丢失指向B的唯一指针)将导致代码内存泄漏。您不希望代码内存泄漏
结论:不,这样做是不必要的,也是不好的。我真的不想回答,因为这里有两个不同的问题。请编辑并提出一个问题。请您扩展一下,在第二种情况下使用两个缓冲区是什么意思。如果我在第一种情况下等同于结构的成员,我会同时使用两个缓冲区吗EN
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
typedef struct {
int data;
}somestruct;
somestruct *A,*B;
A = malloc(sizeof(somestruct));
/* do not do this because this cause memory leak */
/* B = malloc(sizeof(somestruct)); */
B = A;
free(A); /* do not forget to free the memory */
return 0;
}