相关疑难解决方法(0)

是strtol,strtod不安全吗?

似乎strtol()并且strtod()有效地允许(并强制)你在字符串中抛弃constness:

#include <stdlib.h>
#include <stdio.h>

int main() {
  const char *foo = "Hello, world!";
  char *bar;
  strtol(foo, &bar, 10); // or strtod(foo, &bar);
  printf("%d\n", foo == bar); // prints "1"! they're equal
  *bar = 'X'; // segmentation fault
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

上面,我自己没有演出.然而,strtol()基本上把我const char *变成了一个char *对我来说,没有任何警告或任何东西.(事实上,它不会让你输入barconst char *,所以迫使类型的不安全的变化.)是不是真的很危险?

c const const-char std c-strings

15
推荐指数
2
解决办法
4886
查看次数

标签 统计

c ×1

c-strings ×1

const ×1

const-char ×1

std ×1