Avatar billede Slettet bruger
03. august 2005 - 14:53 Der er 5 kommentarer og
1 løsning

Hvad betyder "Managed code"?

Når jeg forsøger at gøre mig selv lidt klogere ved at læse på nettet, så støder jeg tit på udtrykket "Managed code".... hvad betyder det?

Eksempelvis: "the choice comes down to native (C++, Win32, MFC, ATL) or managed (C# or Visual Basic) code."
Avatar billede arne_v Ekspert
03. august 2005 - 14:56 #1
managed kode er er et .NET begreb for kode kører under .NET runtime

sådan lidt firkantet bruger managed kode garbage collection så man skal ikke
selv bekymre sig om at deallokere memory

mens unmanaged kode er normal native kode hvor man selv skal deallokere memory
Avatar billede Slettet bruger
04. august 2005 - 09:14 #2
Dvs at "Managed C++" er C++ med garbage collecting?
Avatar billede arne_v Ekspert
04. august 2005 - 09:23 #3
Plus lidt mere.

Men garbage collection er nok det man ligger mest mærke til som sprog feature.
Avatar billede arne_v Ekspert
04. august 2005 - 09:25 #4
jeg lavede for et stykke tid siden disse eksempler

unmanaged:

#include <iostream>

using namespace std;

int main()
{
    int a[] = { 1, 2, 3, 4, 5 };
    for(int i = 0; i < sizeof(a)/sizeof(int); i++) cout << a[i] << endl;
    int bl = 5;
    int *b = new int[bl];
    for(int i = 0; i < bl; i++) b[i] = i+1;
    for(int i = 0; i < bl; i++) cout << b[i] << endl;
    delete[] b;
    return 0;
}

managed .NET 1.1:

#using <mscorlib.dll>

using namespace System;

int main()
{
    int a __gc[] = { 1, 2, 3, 4, 5 };
    for(int i = 0; i < a->Length; i++) Console::WriteLine(a[i]);
    int b __gc[] = new int __gc[5];
    for(int i = 0; i < b->Length; i++) b[i] = i+1;
    for(int i = 0; i < b->Length; i++) Console::WriteLine(b[i]);
    return 0;
}

managed .NET 2.0:

#using <mscorlib.dll>

using namespace System;

int main()
{
    array<int>^ a = { 1, 2, 3, 4, 5 };
    for(int i = 0; i < a->Length; i++) Console::WriteLine(a[i]);
    array<int>^ b = gcnew array<int>(5);
    for(int i = 0; i < b->Length; i++) b[i] = i+1;
    for(int i = 0; i < b->Length; i++) Console::WriteLine(b[i]);
    return 0;
}
Avatar billede Slettet bruger
04. august 2005 - 14:25 #5
Koden kan jeg ikke lige gennemskue, da jeg ikke er C++ haj. Men det overlever jeg nok.

Jeg takker for svaret, og jeg vil gerne give point.
Avatar billede arne_v Ekspert
04. august 2005 - 14:27 #6
pointen var bare at new & delete var forskellige

så må jeg hellere ligge et svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester