Я не понимаю разницу между malloc и new
blockquote>Вам необходимо прочитать гораздо больше о C ++ , например, небольшая книга по программированию на C ++ и хороший справочный сайт по C ++ . Да, C ++ - очень сложный язык (вам понадобятся годы работы, чтобы освоить его). Позже вы можете погрузиться в стандарт C ++ 11 n3337 (или более поздний стандарт C ++). Вам, безусловно, нужно точно точно понимать роль конструкторов и деструкторов (и объяснять, что это занимает много страниц, гораздо больше, чем можно разумно ожидать в любом ответе StackOverflow ).
Вам нужно иметь код ваших конструкторов для выполнения (и это делается с
new
, но не сmalloc
) - и позже деструкторы также должны быть выполнены, прежде чем освободить память. Деструкторы называютсяdelete
(и во многих других случаях), но, конечно, неfree
. Читайте также о правиле из пяти и о RAII .Вы должны, когда это возможно, предпочитать использовать умные указатели . Иногда (например, для циклических ссылок) их недостаточно.
Бояться неопределенного поведения .
Инструмент valgrind полезен для поиска ошибок, связанных с памятью. Вы также должны скомпилировать все предупреждения и отладочную информацию, поэтому
g++ -Wall -Wextra -g
с GCC . Вы также можете использовать статические анализаторы исходного кода, такие как clang-analyzer или Frama-C . Использование их может потребовать большого опыта; нет серебряной пули .Ваш
struct Record_array
неправ: предпочитаете использоватьstd::vector
. Узнайте больше о стандартных контейнерах C ++ .Конструктор вашего
Record
будет вызывать конструктор изstr1
и изstr2
(чтобы он, конструктор изstd::string
-s применялся к двум разным местоположениям). Если вы не вызываете этот конструкторRecord
,str1
иstr2
останутся в неопределенном состоянии (поэтому у вас будет некоторое неопределенное поведение , как только вы их используете).Основное различие между
[1 165] PS. На практике вы никогда не должны использоватьmalloc
и amp;free
(для C) иnew
иdelete
(для C ++) - это способ привлечения конструкторов и деструкторов. Конечно,malloc
& amp;free
игнорируют их, но неnew
& amp; [+1121]. Отказ выделения памяти (например, когда виртуальная память исчерпана) также обрабатывается по-другому.malloc
в коде C ++ , за исключением - только в редких случаях - при определении своего собственногоoperator new
. Потому чтоmalloc
не вызывает конструкторы C ++ (ноnew
делает). Также, пожалуйста, поймите, что C и C ++ - это разные языки программирования , иmalloc
для C, а не C ++. Многие реализации стандартной библиотеки C ++ используютmalloc
в своей реализации стандарта::operator new
и используютfree
в своих::operator delete
.
Любой DisplayObjectContainer (например, MovieClip или сцена) имеет метод getObjectsUnderPoint, который возвращает массив экранных объектов в этот момент. Он принимает объект Point в качестве аргумента.
var myObjects: Array = stage.getObjectsUnderPoint(new Point(5, 5));
Если вы используете его в классе, не забудьте импортировать flash.geom.Point;
Метод hitTestPoint () получит информацию, если объект DisplayObject находится в указанной точке ( http: / /livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/flash/display/DisplayObject.html#hitTestPoint())
Чтобы получить список объектов, которые вы должны были бы рекурсивно исследовать для всех детей сцены, я не думайте, что для этого есть предопределенная функция.
Альтернатива: чего вы пытаетесь достичь? Может быть, вы можете просто использовать события и делать их пузыри?