В C ++ 11 возможно:
auto array = new double[M][N];
Таким образом, память не инициализируется. Для инициализации это сделайте это вместо:
auto array = new double[M][N]();
Пример программы (скомпилируйте с помощью «g ++ -std = c ++ 11»):
#include <iostream>
#include <utility>
#include <type_traits>
#include <typeinfo>
#include <cxxabi.h>
using namespace std;
int main()
{
const auto M = 2;
const auto N = 2;
// allocate (no initializatoin)
auto array = new double[M][N];
// pollute the memory
array[0][0] = 2;
array[1][0] = 3;
array[0][1] = 4;
array[1][1] = 5;
// re-allocate, probably will fetch the same memory block (not portable)
delete[] array;
array = new double[M][N];
// show that memory is not initialized
for(int r = 0; r < M; r++)
{
for(int c = 0; c < N; c++)
cout << array[r][c] << " ";
cout << endl;
}
cout << endl;
delete[] array;
// the proper way to zero-initialize the array
array = new double[M][N]();
// show the memory is initialized
for(int r = 0; r < M; r++)
{
for(int c = 0; c < N; c++)
cout << array[r][c] << " ";
cout << endl;
}
int info;
cout << abi::__cxa_demangle(typeid(array).name(),0,0,&info) << endl;
return 0;
}
Выход:
2 4
3 5
0 0
0 0
double (*) [2]
Так как программы как AdBlock на самом деле никогда не запрашивают объявление, необходимо было бы посмотреть журналы сервера, чтобы видеть, получил ли тот же пользователь доступ к веб-странице, но не получил доступ к объявлению. Это предполагает, что объявление находится на том же сервере.
, Если бы Ваши объявления находятся на отдельном сервере, то я предположил бы, что невозможно сделать так.
лучший способ мешать пользователям блокировать объявления, должен иметь встроенные текстовые объявления, которые сгенерированы сервером и придуманы в Вашем HTML.
Добавьте идентификатор пользователя к запросу на рекламу:
<img src="./ads/viagra.jpg?{user.id}"/>
тот способ, которым можно проверить, какая реклама замечена который пользователи.
Необходимо думать о различных способах, которыми заблокирована реклама. Первая вещь посмотреть на состоит в том, выполняют ли они noscript, таким образом, Вы могли добавить сценарий, который проверит на это.
следующая вещь состоит в том, чтобы видеть, блокируют ли они флэш-память, маленький фильм должен сделать это.
при рассмотрении adblock сайта существует некоторый признак того, как он делает блокирование:
, Как сокрытие элемента работает?
, Если Вы смотрите далее вниз, что страница, Вы будете видеть, что стандартное хромовое зондирование не будет работать, таким образом, необходимо будет попытаться проанализировать измененный DOM.
Я предполагаю, что Вы могли сравнить печать рекламы с просмотрами страницы на Вашем веб-сайте (который можно получить из аналитического программного обеспечения).
Форум AdBlock говорит , это используется для обнаружения AdBlock. После того, как некоторая тонкая настройка Вас могла использовать это для сбора некоторой статистики.
setTimeout("detect_abp()", 10000);
var isFF = (navigator.userAgent.indexOf("Firefox") > -1) ? true : false,
hasABP = false;
function detect_abp() {
if(isFF) {
if(Components.interfaces.nsIAdblockPlus != undefined) {
hasABP = true;
} else {
var AbpImage = document.createElement("img");
AbpImage.id = "abp_detector";
AbpImage.src = "/textlink-ads.jpg";
AbpImage.style.width = "0";
AbpImage.style.height = "0";
AbpImage.style.top = "-1000px";
AbpImage.style.left = "-1000px";
document.body.appendChild(AbpImage);
hasABP = (document.getElementById("abp_detector").style.display == "none");
var e = document.getElementsByTagName("iframe");
for (var i = 0; i < e.length; i++) {
if(e[i].clientHeight == 0) {
hasABP = true;
}
}
if(hasABP == true) {
history.go(1);
location = "http://www.tweaktown.com/supportus.html";
window.location(location);
}
}
}
}