У меня есть программа на C#, вызывающая существующую библиотеку библиотеки изображений C с использованием P/Invoke.Max Buffer Размер при вызове Родные методы
Возможно ли, что существует ограничение по размеру буферов, чем может быть эффективно распределено?
Я вызываю функцию, где я передать указатель на InputBuffer, его размер и OUTPUTBUFFER, как это:
cmsDoTransform(xform, inputBitmapBytesRGB, outputBitmapBytesCMYK, TotalPixels);
Экспериментируя с этим кодом, я продолжал получать ошибки MemoryAccessViolation?
Итак, я начал работать с очень маленькими изображениями RGB размером от 1x1 пикселей, 2x2, 4x4, 8x8, 16x16 до 64x64, и все сработало, внезапно, больше никаких сообщений об ошибках. Не может быть счастливее.
Уверенный, я вернулся к своему оригинальному образцу RGB с разрешением 364x288 пикселей. Это не сработало? Вернуться к MemoryAccessViolations?
Таким образом, я уменьшил размер изображения с 364x288 до 288x288 до 256x256, пока он не «прошел», на 128x128, в результате получится размер изображения 49,512 байт.
Таким образом, параметр TotalPixels в приведенном выше вызове функции стал 128x128 или 16,384. Кажется, что о «максимальном» номере, который .NET-маршаллер принимает в качестве размера буфера? Имеет ли это смысл?
Есть ли верхний предел в .NET, который я не могу сделать выше в скромных видах обработки изображений, которые я делаю?
Убедитесь, что индекс для байта [] является улоном, а не целым числом. – jdweng