Сообщение Re[6]: Безопасно ли присваивать один указатель другому?.. от 26.03.2018 14:56
Изменено 26.03.2018 15:17 AlexGin
Re[6]: Безопасно ли присваивать один указатель другому?..
Здравствуйте, SaZ, Вы писали:
...
SaZ>Лучше вот это объясните:
SaZ>https://ideone.com/3WjDKl
...
Издержки онлайнового ideone.com
У меня в MSVC2015
Вывод для MSVC2015 (x86):
sizeof(void *) = 4
sizeof(p) = 4
Вывод для MSVC2015 (x64):
sizeof(void *) = 8
sizeof(p) = 8
Верю студии!
вывод для http://rextester.com/l/cpp_online_compiler_visual
sizeof(void *) = 8
sizeof(p) = 8
Здесь (в cpp_online_compiler_visual) также вроде логично.
вывод для ideone.com:
аналогично для https://wandbox.org:
аналогично для http://cpp.sh (в режиме Cpp-11):
Not OKsizeof(void *) = 8
sizeof(p) = 16
Полагаю, что здесь (в последних трёх случаях) имеются неточности
По крайней мере, у меня здесь нет логичного объяснения.
...
SaZ>Лучше вот это объясните:
SaZ>https://ideone.com/3WjDKl
...
Издержки онлайнового ideone.com
У меня в MSVC2015
#include "stdafx.h"
#include <iostream>
#include <string>
struct A
{
virtual void f() = 0;
};
struct B : A
{
void f() override {}
};
int main()
{
const auto p = &B::f;
const bool ok = sizeof(void *) == sizeof(p);
if (!ok)
std::cout << "Not OK";
std::cout << "sizeof(void *) = " << sizeof(void *) << std::endl;
std::cout << "sizeof(p) = " << sizeof(p) << std::endl;
getchar();
return 0;
}
Вывод для MSVC2015 (x86):
sizeof(void *) = 4
sizeof(p) = 4
Вывод для MSVC2015 (x64):
sizeof(void *) = 8
sizeof(p) = 8
Верю студии!
вывод для http://rextester.com/l/cpp_online_compiler_visual
sizeof(void *) = 8
sizeof(p) = 8
Здесь (в cpp_online_compiler_visual) также вроде логично.
вывод для ideone.com:
аналогично для https://wandbox.org:
аналогично для http://cpp.sh (в режиме Cpp-11):
Not OKsizeof(void *) = 8
sizeof(p) = 16
Полагаю, что здесь (в последних трёх случаях) имеются неточности
По крайней мере, у меня здесь нет логичного объяснения.
Re[6]: Безопасно ли присваивать один указатель другому?..
Здравствуйте, SaZ, Вы писали:
...
SaZ>Лучше вот это объясните:
SaZ>https://ideone.com/3WjDKl
...
Издержки онлайнового ideone.com
У меня в MSVC2015
Вывод для MSVC2015 (x86):
sizeof(void *) = 4
sizeof(p) = 4
Вывод для MSVC2015 (x64):
sizeof(void *) = 8
sizeof(p) = 8
Верю студии!
вывод для http://rextester.com/l/cpp_online_compiler_visual
sizeof(void *) = 8
sizeof(p) = 8
Здесь (в cpp_online_compiler_visual) также вроде логично.
вывод для ideone.com:
аналогично для https://wandbox.org:
аналогично для http://cpp.sh (в режиме Cpp-11):
Not OKsizeof(void *) = 8
sizeof(p) = 16
Насчёт http://rextester.com:
cpp_online_compiler_gcc также выдал:
и cpp_online_compiler_clang
Not OKsizeof(void *) = 8
sizeof(p) = 16
Странно...
По крайней мере, у меня здесь нет логичного объяснения.
...
SaZ>Лучше вот это объясните:
SaZ>https://ideone.com/3WjDKl
...
Издержки онлайнового ideone.com
У меня в MSVC2015
#include "stdafx.h"
#include <iostream>
#include <string>
struct A
{
virtual void f() = 0;
};
struct B : A
{
void f() override {}
};
int main()
{
const auto p = &B::f;
const bool ok = sizeof(void *) == sizeof(p);
if (!ok)
std::cout << "Not OK";
std::cout << "sizeof(void *) = " << sizeof(void *) << std::endl;
std::cout << "sizeof(p) = " << sizeof(p) << std::endl;
getchar();
return 0;
}
Вывод для MSVC2015 (x86):
sizeof(void *) = 4
sizeof(p) = 4
Вывод для MSVC2015 (x64):
sizeof(void *) = 8
sizeof(p) = 8
Верю студии!
вывод для http://rextester.com/l/cpp_online_compiler_visual
sizeof(void *) = 8
sizeof(p) = 8
Здесь (в cpp_online_compiler_visual) также вроде логично.
вывод для ideone.com:
аналогично для https://wandbox.org:
аналогично для http://cpp.sh (в режиме Cpp-11):
Not OKsizeof(void *) = 8
sizeof(p) = 16
Насчёт http://rextester.com:
cpp_online_compiler_gcc также выдал:
и cpp_online_compiler_clang
Not OKsizeof(void *) = 8
sizeof(p) = 16
Странно...
По крайней мере, у меня здесь нет логичного объяснения.