【问题标题】:why is b array not copy whole a array?为什么 b 数组不复制整个数组?
【发布时间】:2015-12-07 00:33:33
【问题描述】:

我认为这是因为 b 指向 a 的第一个元素,因此它具有第一个元素的值。 现在 b 指向第一个元素,我们可以访问 a 数组中的所有值。

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

int main(void) 
{
  int *b,*a={0,0,0,0,0},i;
  b=(int*)malloc(5*sizeof(int));
  b=a;
  a = NULL;
  for(i=0;i<5;i++)
  {
    printf("%d",*(b+i));
  }
  return 0;
}

【问题讨论】:

  • 请清理您的演示文稿。
  • 编译器告诉你关于你的代码的什么?我猜它会有一些明智的建议。
  • 编译器应该因为a的初始化而对你大喊大叫;该类型的初始化器对指针无效。
  • 编译器不会对你大喊大叫,但我会:“内存泄漏在线b=a;”;-)

标签: c pointers memory-leaks


【解决方案1】:

你不能用这种方式初始化 int 指针 'a',a 的值是内存地址而不是 int。

如果您不想分配内存,可以使用局部变量“int a[]={0,0,0,0,0}”。

使用“b=a”行,您将 a 的地址存储在 b 中,并且丢失了先前分配的内存,您可以这样做: "for(i=0;i

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-04-04
    • 2021-10-06
    • 2021-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-29
    相关资源
    最近更新 更多