Я получаю это предупреждение, если пытаюсь использовать функцию geti () в следующем коде.
Warning C6385 Reading invalid data from 'snapPts': the readable size is '((geti()+1))*sizeof(DPoint3d)' bytes, but '48' bytes may be read.
Но если я использую целое число, например
int i
, я не смогу получить предупреждение.Я не могу понять сценарий, что то, что там происходит, я много гуглил, но не смог найти решение.Я новичок в C ++, прошу прощения за ошибку в написании и помогите мне понять это.
Примечание.* Я использую следующий код
#include <windows.h>
#include <stdio.h>
#include <malloc.h>
#include <corecrt_wstring.h>
int geti() {
return 2;
}
struct DPoint3d
{
//! x coordinate
double x;
//! y coordinate
double y;
//! z coordinate
double z;
};
int main(array<System::String ^> ^args)
{
int i = 2;
if (i > 1) {
DPoint3d* snapPts = (DPoint3d *)_alloca((geti() + 1) * sizeof(DPoint3d));
DPoint3d* snapPts2 = new DPoint3d();
*snapPts2 = snapPts[1];
}
return 0;
}
Отличный ответ действительно приветствуется.
Спасибо