Я пытаюсь что-то (изначально исходит от here) о проекте «Куча и указатель на проекте консоли C#». И моя программа выглядит следующим образом:Проблема с преобразованием типа в C#
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Runtime.InteropServices;
public class Win32
{
[DllImport("user32.dll", CharSet = CharSet.Auto)]
public static extern IntPtr malloc(int size);
[DllImport("user32.dll", CharSet = CharSet.Auto)]
public static extern int free(IntPtr region); //Change IntPtr befroe free method to int ---update---
}
public class Program
{
public unsafe void Heap()
{
int* num1, num2, answer;
num1 = Win32.malloc(sizeof(int));
*num1 = 999; // 999 should be the value stored at where pointer num1 refers to
num2 = Win32.malloc(sizeof(int));
*num2 = 1; // 1 should be the value stored at where pointer num2 refers to
answer = Win32.malloc(sizeof(int));
*answer = *num1 + *num2; // 1000 should be the value of pointer answer's reference
Console.WriteLine(*answer); // 1000?
Win32.free(num1);
Win32.free(num2);
Win32.free(answer);
}
}
После отладки, получил сообщение об ошибке говорит:
Ошибка 1 Не удается неявно преобразовать тип «System.IntPtr» в «междунар *». явного преобразования существует (вы пропали без вести броска?)
error CS1502: The best overloaded method match for 'Win32.free(System.IntPtr)' has some invalid arguments
error CS1503: Argument 1: cannot convert from 'int*' to 'System.IntPtr'
Моих вопросов здесь, почему я не могу использовать IntPtr до того таНос и свободно, так как метод обратной пустоты? Какие изменения я должен внести в свои коды? Благодарим за помощь.
--- Update ---
изменение: public static extern IntPtr free(int hWnd);
к общественности статической extern int free(IntPtr region);
, free(*num)
к free(num)
дает дополнительный 'CS1502' и две ошибки 'CS1503'.
--- second Update --- C# сделка куча предмет автоматически. В C# нет эквивалента malloc. Это тупик. T_T
'вы пропали без вести слепок' – Rob
@Rob Проблема заключается в том, что я не думаю, что я скучаю в ролях. И я не знаю, как преобразовать пустоту в int. –