Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

208
Vistas
error de icpc al compilar variables asignadas dinámicas sobrealineadas

Estoy tratando de compilar un código en C++, que usa variables sobrealineadas. Si trato de compilar el siguiente código (un MWE)

 #include <new> #include <iostream> int main() { alignas(32) double *r = new (std::align_val_t{32}) double[3]; std::cout << "alignof(r) is " << alignof(r) << '\n'; return 0; }

todo funciona sin problemas si uso icpx o g++ (en todos los casos, el indicador -std=c++17 se le da al compilador). Sin embargo, al compilar usando Intel icpc , recibí el siguiente error

 mwe.cpp(6): error: no instance of overloaded "operator new[]" matches the argument list argument types are: (unsigned long, std::align_val_t) alignas(32) double *r = new (std::align_val_t{32}) double[3]; ^ /usr/include/c++/9/new(175): note: this candidate was rejected because arguments do not match _GLIBCXX_NODISCARD inline void* operator new[](std::size_t, void* __p) _GLIBCXX_USE_NOEXCEPT ^ /usr/include/c++/9/new(141): note: this candidate was rejected because arguments do not match _GLIBCXX_NODISCARD void* operator new[](std::size_t, const std::nothrow_t&) _GLIBCXX_USE_NOEXCEPT ^ /usr/include/c++/9/new(127): note: this candidate was rejected because mismatch in count of arguments _GLIBCXX_NODISCARD void* operator new[](std::size_t) _GLIBCXX_THROW (std::bad_alloc) ^ mwe.cpp(7): warning #3464: the standard "alignof" operator does not accept an expression argument (use a type instead) std::cout << "alignof(r) is " << alignof(r) << '\n'; ^ compilation aborted for mwe.cpp (code 2)

y no entiendo cual puede ser el error. ¿Cómo puedo solucionar este problema?

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Parece que el icpc no cumple con el estándar con asignaciones alineadas. Citando de la documentación para la versión 2021.5:

En esta versión del compilador, todo lo que se necesita para obtener la asignación dinámica correcta para los datos alineados es incluir un nuevo encabezado :

#include <aligned_new>

Después de incluir este encabezado, una nueva expresión para cualquier tipo alineado asignará automáticamente memoria con la alineación de ese tipo.

Enlace: https://www.intel.com/content/www/us/en/develop/documentation/cpp-compiler-developer-guide-and-reference/top/optimization-and-programming-guide/automatically-aligned- asignación-dinámica/asignación-dinámica-alineada-automáticamente-1.html

Demostración en vivo: https://godbolt.org/z/5xMqKGrTG

Esta sección no se encuentra en la documentación de icpx: https://www.intel.com/content/www/us/en/develop/documentation/oneapi-dpcpp-cpp-compiler-dev-guide-and-reference/top. html

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda