Software mi ima managed (.NET, C#) deo i unmanaged (c++) deo.
U unmanaged delu pozivam strlen u sledecem kodu:
if ((*currSourcePageScope)->pageScope != NULL)
{
int pageScopeSize = strlen((*currSourcePageScope)->pageScope);
}
U vecini slucajeva strlen odradi posao dobro, ali kad opteretim software,
jednostavno pukne sa 'Access violation reading location...'
(*currSourcePageScope)->pageScope je konstantni string koji dobija vrednost u
managed (C#, .NET) delu i prosledjuje se preko struct-a u unmanaged deo.
//pageScope je C# struct i PageScope je string.
pageScope.PageScope = Marshal.StringToHGlobalAnsi(this.CurrentJob.RipDescription.PageScopeTransformations[i].PageScope);
---
//kasnije se za taj string poziva marshaling utility za pravljenje pointera (interop marshalling) ka unmanaged delu:
IntPtr ptrPageScope = Marshal.AllocHGlobal(Marshal.SizeOf(pageScope));
Marshal.StructureToPtr(pageScope,ptrPageScope,false);
Kao da taj (*currSourcePageScope)->pageScope nije null terminated char* pa se strlen zbuni.
Please, help. Hvala unapred :)