【问题标题】:output memory adresses of mallocmalloc的输出内存地址
【发布时间】:2016-04-13 11:12:33
【问题描述】:

数组中每个元素的内存地址显示为

int first[4], n=4;
for(int i=0;i<n;i++){
   cout<<"first#" <<i<<" "<<&first[i]<<endl; 
}

我想问如何输出使用malloc分配的每个元素的地址?

int *first = (int *) calloc(n, sizeof(int));

【问题讨论】:

  • 可以用完全相同的方式完成。
  • C 中没有cout

标签: c memory malloc


【解决方案1】:

您的代码可以使用完全相同的方式输出malloc 分配的内存。

或者你可以像下面这样使用指针方式:

int *array;
array=malloc(4*sizeof(int);
for(int i=0;i<4;i++)
  printf("Address %d : %p\n",i,(array+i));

如果内存是自动分配还是手动分配(如在 malloc 中),您认为会有什么不同?

【讨论】:

  • 这个关于 SO link 的答案非常强烈地表明不应强制转换 malloc。数组=malloc(4 * sizeof(int));
  • @anita2R OP 显然正在使用 C++ 但错误标记的问题,因此需要将 malloc 投射到那里。此外,如果您阅读了整个链接,那么malloc(4 * sizeof *array); 是推荐的形式。在不更改 sizeof 的情况下删除演员表会因为删除错误检查而使代码变得更糟。
  • @M.M 显示的行 'array=malloc(4*sizeof(int));` 已被编辑 - 它最初是(如果我没记错的话)array=(int *) malloc(4*sizeof(int));,是的 - OP 的代码问题中必须是 C++ ...虽然答案(已接受)似乎是 C - 这是我评论的内容。
猜你喜欢
  • 2018-08-03
  • 1970-01-01
  • 2014-11-27
  • 2020-03-13
  • 1970-01-01
  • 2013-06-04
  • 2011-08-09
  • 1970-01-01
  • 2016-07-11
相关资源
最近更新 更多