Здравствуйте.
Данная функция предназначена для УДАЛЕНИЯ МАССИВА ИЗ СТЕКА (памяти).
Тобишь, это равносильно удалению оператором delete массивов в C++.
Функция на стадии БЕТА, так что за полную работоспособность не ручаюсь.
Все баги, связанные с функцией, вы можете отписать в эту тему.
PHP код:
#define delete(%0); \
delete_array(%0); \
#pragma unused %0
delete_array(array[], size = (sizeof(array) >> 2))
{
new
arraySize,
arrayStart,
arrayEnd
;
#emit LOAD.S.pri 12
#emit STOR.S.pri arrayStart
#emit SHL.C.pri 2
#emit LOAD.S.alt size
#emit ADD
#emit STOR.S.pri arrayEnd
arraySize = ((arrayEnd - arrayStart) << 2);
#emit LOAD.S.pri arraySize
#emit LREF.S.alt array
#emit ADD.C 4
#emit PUSH.pri
#emit POP.alt
#emit SHL.C.pri 3
#emit LOAD.S.alt arrayEnd
#emit DEC.alt
#emit JZER
#emit SREF.S.pri arrayStart
arrayStart /= 8;
#emit PUSH.C 4
#emit LCTRL 1
#emit NEG
#emit MOVE.alt
#emit STOR.S.alt arrayStart
arraySize -= ((arrayEnd | 32) >>> (arrayStart & 16));
#emit STACK arraySize
}
Пример:
PHP код:
main()
{
new arr[32] = "Удали меня полностью";
delete(arr);
}