Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 31.03.2014, 17:31   #1
IT-Lopata
7 - классник
Форумчанин
 
Аватар для IT-Lopata
 
Регистрация: 27.03.2014
Сообщений: 181
По умолчанию Как получить указатель IntPtr на массив Int

Хочу скопировать один массив в другой. Использую Marshal.Copy.
Получаю 0 указатель на массив. Программа валится.

Код.

Код:
using System;

namespace con3
{
	class MainClass
	{
		public static void Main (string[] args)
		{

			int[] mas1 = new int[100];
			for (int i=0; i<mas1.Length; i++) {
				mas1 [i] = i;
			}
			int[] mas2 = new int[100];


			IntPtr ptr = new IntPtr(mas2[0]);

			System.Runtime.InteropServices.Marshal.Copy (mas1, 0, ptr, mas1.Length);

			for (int i=0; i < mas2.Length; i++) {
				Console.WriteLine(mas2[i]);
			}

			Console.WriteLine ("Hellow world");
			Console.WriteLine ("Hello World!");
		}
	}
}
IT-Lopata вне форума Ответить с цитированием
Старый 31.03.2014, 19:41   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А зачем маршалить?
mas2=mas1.Copy() не подходят?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 31.03.2014, 20:02   #3
IT-Lopata
7 - классник
Форумчанин
 
Аватар для IT-Lopata
 
Регистрация: 27.03.2014
Сообщений: 181
По умолчанию

я чесно не подозревал о таком. спс.
но в тоже время мне именно помаршалить хотелось, ибо я подумал это самый крутой способ(скоростной и гибкий) копирования чего-либо куда либо. скопировать скажем массив струкрут в массив байтов а его записать.

так все-таки нельзя получить указатель на массив ?
IT-Lopata вне форума Ответить с цитированием
Старый 31.03.2014, 21:05   #4
Rififi
Старожил
 
Регистрация: 19.08.2009
Сообщений: 2,119
По умолчанию

IT-Lopata

ибо я подумал это самый крутой способ(скоростной и гибкий)

чем раньше ты отучишься думать в к00л-хацкер стиле, тем лучше :D

так все-таки нельзя получить указатель на массив ?

ну уж явно не так, так ты делаешь.

var pin = GCHandle.Alloc(mas1, GCHandleType.Pinned);
var p = pin.AddrOfPinnedObject();
Rififi вне форума Ответить с цитированием
Старый 31.03.2014, 22:07   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
ибо я подумал это самый крутой способ(скоростной и гибкий)
Рекомендую почитать темы одного нашего форумчанина, который зациклился на решениях задач из портала ACMP.ru, решив довести их до абсурда потому что это круто.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 31.03.2014, 22:12   #6
IT-Lopata
7 - классник
Форумчанин
 
Аватар для IT-Lopata
 
Регистрация: 27.03.2014
Сообщений: 181
По умолчанию

книжку долистал до указателей, как оказывается с шарпе есть нормальные указатели fixed(int* p = &x) { } а intPtr это что-то не настоящее похоже.

Цитата:
чем раньше ты отучишься думать в к00л-хацкер стиле, тем лучше :D
не, я именно кулл-хацкер стиль лю и хочу по возможности его как-то развивать и не радоваться той ерунде что на витрине лежит :D
IT-Lopata вне форума Ответить с цитированием
Старый 31.03.2014, 22:22   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
не радоваться той ерунде что на витрине лежит :D
Ну смотри не обожгись. У огня две стороны медали.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 31.03.2014, 23:22   #8
IT-Lopata
7 - классник
Форумчанин
 
Аватар для IT-Lopata
 
Регистрация: 27.03.2014
Сообщений: 181
По умолчанию

Цитата:
У огня две стороны медали.
аще ребро есть D

Цитата:
mas2=mas1.Copy() не подходят?
вот опять возвращаясь к этому копированию.
чтобы сделать глубинное копирование массива (своих классов, ссылочных типов) мне от чего их надо наследовать IClonable ? В этом случае mas1.Copy() будет делать глубинное копирование ? или это только к методу Clone() относится ???
IT-Lopata вне форума Ответить с цитированием
Старый 01.04.2014, 11:09   #9
Rififi
Старожил
 
Регистрация: 19.08.2009
Сообщений: 2,119
По умолчанию

IT-Lopata

чтобы сделать глубинное копирование массива (своих классов, ссылочных типов) мне от чего их надо наследовать IClonable ?

можно, но это не круто. ICloneable используют только хомячки и прочие существа в начале пищевой цепочки, именуемые юзерами.

чОткие пацанчики юзают только unsafe pointers, только хардкор. Иначе тебе никогда не стать хакером.
получай память через fixed, изучай содержимое объекта через рефлексию, внедряй IL-код непосредственно в приложение через Emit. И тогда тебя в школе зауважают. А это, братюнь, дорогого стоит. Вспомни художественный фильм "Хакеры". Думаешь, главный герой сумел бы замутить с Анжелиной Джоли, если бы был обычным ботаном, использующим ICloneable? Да ни в жизнь.

Так что дерзай, братюнь!
Rififi вне форума Ответить с цитированием
Старый 01.04.2014, 14:18   #10
IT-Lopata
7 - классник
Форумчанин
 
Аватар для IT-Lopata
 
Регистрация: 27.03.2014
Сообщений: 181
По умолчанию

Цитата:
Так что дерзай, братюнь!
Уважуха братюнь, хоть один чоткий пацан нашелся.
И знает что к чему и за что в школе уважают :D

Вот ты мне все про пацанские кулхацкерные ништяки прорассказывал, а сам мне так и не ответил конкретно (можноэ - не считается D) IClonable потомкам перегружают метод Clone() или Copy() ?
IT-Lopata вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как получить указатель на буфер с ранее выделенной памятью? calypso Win Api 1 14.03.2013 14:20
Как получить указатель на первый байт битового образа? Don Karleone Общие вопросы Delphi 2 05.05.2012 09:12
скопировать IntPtr в IntPtr DeGroup C# (си шарп) 1 08.04.2012 10:49
Как получить Int из String ? mediaman Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 08.09.2011 17:36
Как получить текст из Edit в переменную INT nimbler Win Api 4 05.11.2009 22:45