-
+16
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
#include <iostream>
using namespace std;
struct T{int a;T(){cout<<"T"<<this<<endl;}~T(){cout<<"~T"<<this<<endl;}};
struct D:public T{int b;D(){cout<<"D"<<this<<endl;}~D(){cout<<"~D"<<this<<endl;}};
int main() {
T* a = new D[2];
cout<<"mission failure"<<endl;
delete[] a;
return 0;
}
Писал тест специально для Тараса:
Виртуальный деструктор в базовых классах нужен:
*Для вызова деструкторов всех потомков. Иногда это не нужно, тк поля структуры тривиальны. Согласен с Тарасом.
*Для правильного выбора перегруженного оператора delete. Создал одним менеджером памяти, а удалил в другой - это плохо. Но также бывает редко и только в специфичных проектах.
Но вот то, что демонстрируется в этом примере - думаю чего-нибудь такого создатели той библиотеки, что ковырял Тарас, и опасались.
Не просто было вызван деструктор только для предков, забыв о деструкторах потомков, но и:
*Деструктор предков был вызван для this не по тем адресам, где расположены объекты.
Не удивлюсь, если:
*В некоторых кулхацкерских реализациях менеджеров памяти будет удален буфер меньшего размера и куча попортится или оставшаяся не удаленная часть массива в куче просто утекет.
http://liveworkspace.org/code/2X3MR0$8
LispGovno,
22 Декабря 2012
-
+156
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
function postGameOrder(option) {
// 48 cтрок кода
if (option == 1) {
if (!confirm("Are you sure you want to save this configuration?")) {
return false;
}
}
// 45 строк кода
}
P.S. Умолчу уже о том, что среди тех 48 и 45 строк кода происходит обращение к глобальным переменным.
На публикацию же вдохновило то, что вот это обращение к option — единственное во всей функции.
wissenstein,
22 Декабря 2012
-
+136
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
i = 0;
while ((p_c = strchr(&str[i], c)) != NULL) {
k = p_c - str;
for (j = 0; j < k - i; j++)
putchar(' ');
putchar('*');
i = k + 1;
}
putchar('\n');
очень простой способ подчеркнуть определённые символы в массиве знаков
taburetka,
22 Декабря 2012
-
−84
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
protected override function onLoaded() : void {
super.onLoaded();
var sleepComplete : Function = function () : void {
closeWindow();
};
onGuest ();
sleep.run( 1000, sleepComplete )
}
slavara,
21 Декабря 2012
-
+73
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
if (jsonValues.toString().contains("acctContext") == true) {
try {
objectRelMethod = impl.provisionDevice(
jsonValues.getString("acctContext"),
jsonValues.getString("persoIdentityRequest"));
}catch(JSONException e){
objectRelMethod = impl.provisionDevice(null, null);
}
}
и туда же... и это называется гордым словом "мидл"...
myzone,
21 Декабря 2012
-
+81
- 1
- 2
- 3
if (request.equals("") || request == null) {
Response.status(Response.Status.NO_CONTENT).build();
}
ну сколько можно...
myzone,
21 Декабря 2012
-
+54
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
function bezpezdu_num($num)
{
if(isset($num) && !empty($num) && is_numeric($num))
return true;
else
return false;
}
function pizdec($text)
{
$showtext = htmlspecialchars($text);
exit($showtext);
}
$app->run_epta();
kindofbear,
21 Декабря 2012
-
+56
- 1
- 2
- 3
- 4
function goto($url, $time = 0)
{
exit('<META HTTP-EQUIV="REFRESH" CONTENT="'.$time.';URL='.$url.'">');
}
kindofbear,
21 Декабря 2012
-
+43
- 1
- 2
- 3
- 4
- 5
- 6
function Podergatsya($i)
{
$i++;
$i--;
return $i;
}
Индусская CMS
kindofbear,
21 Декабря 2012
-
+68
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
/*
* Todo Гавнокод
* Надо как то поуниверсальнее сделать
* А то когда модель вмешавается в отображение, это криворукость
*/
private static String ___recurGet(Dir dir){
MorphiaQuery dirs = dir.getDirList();
String id = dir.getIdAsStr(),
name = dir.name;
String html = "<div class=\"bottom-line\">";
html += "<a href=\"#\" onclick=\"setPrnt('"+id+"')\" id=\""+id+"\">";
html += name;
html += "</a>";
html += "<div class=\"pull-right\">";
html += "<a href=\"#\" class=\"icon-trash\" onclick=\"deleteNode('"+id+"')\"></a>";
html += "</div>";
html += "</div>";
if(dirs.count() < 1)
return html;
html += "<ul>";
for(int i = 0; i < dirs.count(); i++){
html += "<li>";
html += ___recurGet((Dir)dirs.offset(i).first());
html += "</li>";
}
html += "</ul>";
return html;
}
public static String getTreeAsHtml(String _typ){
MorphiaQuery dirs = getRootDirList().filter("typ",Type.valueOf(_typ));
if(dirs.count() < 1)
return "Категорий нет";
String html = "<ul id=\"treeView\">";
for(int i = 0; i < dirs.count(); i++){
html += "<li>";
html += ___recurGet((Dir)dirs.offset(i).first());
html += "</li>";
}
html += "</ul>";
return html;
}
В модели "категория" написал метод для получения дерева категории в виде html кода...
Причем такая генерация должна происходить в view, а сделал как обычно через ж
haker,
21 Декабря 2012