重新分配共享内存

时间:2014-06-24 19:00:57

标签: c linux eclipse mmap

为了重新分配共享内存,我目前正在使用mremap来扩大特定的共享内存大小。以下是为实现此目标而使用的声明:

char *mem = (char*)mremap(addr, sizeof(addr), mem_range + 1, MREMAP_MAYMOVE);

尽管包含:

#define _GNU_SOURCE
#include <sys/mman.h>

Eclipse显示Symbol 'MREMAP_MAYMOVE' could not be resolved

但是,鉴于eclipse显示上述错误,代码正在编译。

以下显示了此方案:

enter image description here

提前致谢!

2 个答案:

答案 0 :(得分:1)

以下代码在SuSE Linux SLES11上编译和链接没有错误或警告:


gcc -Wall -o test test.c

#define _GNU_SOURCE
#include <sys/mman.h>
#include <stdio.h>

int main()
   {
   void   *oldMapAddress = NULL;
   size_t  oldMapSize    = 512;
   size_t  newMapSize    = 1024;
   void   *newMapAddress = NULL;

   newMapAddress = mremap(oldMapAddress, oldMapSize, newMapSize, MREMAP_MAYMOVE);

   return(0);
   }

以上代码不会被执行。它只是编译器/链接器证明。

答案 1 :(得分:0)

为了解决这个问题,我只需要包括: #include <linux/mman.h>代替#include <sys/mman.h>

显然这是Ubuntu中的一个错误,指的是:https://bugs.launchpad.net/ubuntu/+source/alsa-plugins/+bug/1075718