@SergeySerge11

Откуда появляется ошибка при отладке, меняется значение при передаче в функцию?

Почему в отладке данный код ломается. При том если не ставить точек остановки то все Ок. Как такое может быть? При том только в отладке с точкой остановки в определенном месте.

[MethodImpl(MethodImplOptions.AggressiveInlining)]
 public unsafe static int* getAddrNoShift(nint mem, int offset)
 {//mem = 0x0000000000 (хотя по стеку выше было верное значение. 
//Только в отладке и только с точкой остановки(не тут а на вызове по стеку, ниже функция)
     return (int*)((byte*)mem + (offset  ));
 }
  [MethodImpl(MethodImplOptions.AggressiveOptimization)]
   public unsafe static int testFibUnsafeNotShift(nint arrUnsafe, int n)
  {
// вот тут если поставить точку остановки то все ломается, А если  внутри getAddrNoShift  то все ок
      *getAddrNoShift(arrUnsafe, 0) = 0;
      *getAddrNoShift(arrUnsafe, 4) = 1;
// а если тут поставить то все норм, магия
      n *= 4;
      for (int i = 8; i < a; i+=4)
      {

          *getAddrNoShift(arrUnsafe, i)  
              = *getAddrNoShift(arrUnsafe, i - 4)   + *getAddrNoShift(arrUnsafe, i - 8);
      }
      return *getBAddrNotShift(arrUnsafe, n - 4);
  }

           // arrUnsafe = Marshal.AllocCoTaskMem(n*4);

Что это за ошибка, просто ошибка vs, или вдруг может всплыть?
  • Вопрос задан
  • 39 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы