Вызов оператора new

Тема в разделе "WASM.BEGINNERS", создана пользователем Mika0x65, 11 июн 2007.

  1. Mika0x65

    Mika0x65 New Member

    Публикаций:
    0
    Регистрация:
    30 июл 2005
    Сообщения:
    1.384
    Мое почтение всем.

    Делаю ассемблерную вставку в методе класса С++ под Visual Studio 2005. Необходимо вызвать из нее оператор new. Проблема в синтаксисе -- не знаю как вызвать. 'call new' приводит к ошибке С2244. Вариант 'call operator new' дает ошибку синтаксиса. MSDN по этому поводу очень скупо вещает:
    Оператор new не перегружен, т.е. получается, что его таки можно позвать. Может быть кто-то сталкивался с подобным? Заранее благодарен.
     
  2. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    Чайник решил у себя попробовать. Вот такая штука
    Код (Text):
    1. #include <stdio.h>
    2.  
    3. double *tPtr;
    4.  
    5. void main()
    6. {
    7.     _asm
    8.     {
    9.         push 8
    10.         call new
    11.         mov tPtr, eax
    12.         add esp, 4
    13.     }
    14.     delete tPtr;
    15.     printf ("%d\n", tPtr);
    16. }
    компилируется, работает, ненулевой указатель на экран выводит.
     
  3. Mika0x65

    Mika0x65 New Member

    Публикаций:
    0
    Регистрация:
    30 июл 2005
    Сообщения:
    1.384
    Спасибо, этот код действительно работает. Ошибка появляется, если подключить iostream вместо stdio.h. В чем дело пока не понимаю...
     
  4. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    Mika0x65
    Не за что. Чайники тоже бывают полезны... ну водички там вскипятить.
    А насчет iostream, то там, наверное, в каком-нить неявно подключаемом файле типа xlocale или xdebug оператор new перегружается.