mprotect fuggveny elso parameterenek tipusa

Kezdőlap Fórumok Programozás mprotect fuggveny elso parameterenek tipusa

1 / 1 bejegyzés megtekintése
  • Szerző
    Bejegyzés
  • #1887011
    zoltan22
    Felhasználó

      A kovetkezo furcsasagba utkoztem: a mprotect fuggveny parameterei a sugoban (man mprotect), es a fejlec fajlban kulonboznek (/usr/include/sys/mman.h).
      A sugoban ez all:

      NAME
      mprotect – control allowable accesses to a region of memory

      SYNOPSIS
      #include

      int mprotect(const void *addr, size_t len, int prot);

      A fejlecfajlban pedig:

      /* Change the memory protection of the region starting at ADDR and
      extending LEN bytes to PROT. Returns 0 if successful, -1 for errors
      (and sets errno). */
      extern int mprotect (void *__addr, size_t __len, int __prot) __THROW;

      Tehat a fejlecben nincs benne a „const” szo. Ezert konstans memoriazona cimet C++-ban nem lehet megadni a mprotect-nek (C-ben, gcc-vel dob egy figyelmeztetest, de g++-al mar forditasi hibat).
      Nem ertem, hogy miert van ez a kulonbseg. Valaki tudja ennek az okat, es esetleg a kikuszoboleset?

      Itt egy peldaprogram:

      Code:
      #include
      #include

      int main(void){
      const char s[] = „valami”;

      mprotect(s, strlen(s), PROT_NONE);

      return 0;
      }

      A forditas eredmenye:
      $ g++ mprotect-test.c
      mprotect-test.c: In function `int main()’:
      mprotect-test.c:7: error: invalid conversion from `const void*’ to `void*’
      mprotect-test.c:7: error: initializing argument 1 of `int mprotect(void*, size_t, int)’
      $

    1 / 1 bejegyzés megtekintése
    • Be kell jelentkezni a hozzászóláshoz.