Переполнение буфера/, переполняется возможный в абсолютно управляемом asp.net c# веб-приложение

Это происходит потому, что ваш snake является массивом объектов. Вам нужно либо превратить это в один объект, чтобы ваш код работал, либо использовать индекс для выбора объекта внутри.

ctx.fillRect(snake[0].x-unit/2, snake[0].y-unit/2, unit, unit);

Также обратите внимание, что для правильного центрирования вашей змеи вам необходимо вычесть unit/2 из координат x и y.

Вы также можете удалить настройку размеров холста в вашем коде, так как она устанавливается, когда вы определяете атрибуты height и width для вашего элемента canvas.

См. Рабочий пример ниже:

//declare global variables
const canvas = document.querySelector('#canvas');

//set canvas context
const ctx = canvas.getContext('2d');

//put canvas dimensions into variables
const cvsW = canvas.width;
const cvsH = canvas.height;

//create snake unit
const unit = 16;

//create snake and set starting position
let snake = [{
  x: cvsW / 2,
  y: cvsH / 2
}];


ctx.fillStyle = 'lime';
ctx.fillRect(snake[0].x - unit / 2, snake[0].y - unit / 2, unit, unit);
body {
  background-color: #333;
}

#canvas {
  background-color: #4d4d4d;
  display: block;
  margin: auto;
  position: absolute;
  left: 0;
  top: 0;
  right: 0;
  bottom: 0;
}
<canvas id="canvas" width="768" height="512"></canvas>

12
задан MrValdez 3 October 2008 в 14:34
поделиться

3 ответа

Не, если Вы не используете веб-сервер или саму стопку.NET/ASP.NET.

7
ответ дан 2 December 2019 в 20:43
поделиться

В общем случае Вы не должны волноваться о переполнении буфера. Это - одно из главных преимуществ управляемого кода, при этом сборка "мусора" является, возможно, другим главным преимуществом.

Существует несколько пограничных случаев, о которых необходимо знать - любое время управляемый код взаимодействует с неуправляемым кодом (вызовы API Win32, взаимодействующие с COM, P/Invoke, и т.д.) существует потенциал для переполнения буфера в неуправляемом коде, на основе параметров, переданных в из управляемого кода.

Также код, отмеченный как "небезопасный", может непосредственно управлять адресами памяти таким способом как для порождения переполнения буфера. Большая часть кода C# написана, не используя "небезопасное" ключевое слово, все же.

8
ответ дан 2 December 2019 в 20:43
поделиться

I had a tool (HP Dev Inspect) detect a possible "Possible Parameter Buffer Overflow" within my ASP.NET app and it was because we didn't have a MaxLength="20" in one of our TextBoxes...

0
ответ дан 2 December 2019 в 20:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: