优化内存分配是合法的吗?

时间:2016-07-17 18:18:02

标签: c++ memory compiler-optimization

给定一个程序:

hist(by=[column], normed=True, range=[0, 1]) #working argument
hist(by=[column], normed=True, y_range=[0, 1]) #hypothetical argument

Clang将两个函数优化为简单的

#include <cstdlib>
#include <memory>

bool test() {
  int* ptr = (int *)malloc(sizeof(int));
  bool result = ptr != nullptr;
  free(ptr);
  return result;
}

bool test2() noexcept {
  int * ptr;
  try {
    ptr = new int;
  }
  catch (const std::bad_alloc&) {
    return false; 
  }
  bool result = ptr != nullptr;
  delete ptr;
  return result;
}

int main()
{
  return test();
}

godbolt。 GCC 6.1不这样做。即使{ return true; } 级优化,Clang也会这样做。

在C ++标准方面是否合法?

0 个答案:

没有答案