小编wah*_*hab的帖子

构造函数中的内存分配异常

我有一个构造函数,使用new运算符分配几个内存块.

X::X() {
    a = new int[100];
    b = new char[100];
    c = new float[100];
}
Run Code Online (Sandbox Code Playgroud)

我的问题是,如果分配c失败,并且构造函数抛出异常,将会为内存ab自动被删除?

c++ memory-management

12
推荐指数
2
解决办法
973
查看次数

限制C字符串中十六进制转义序列的长度

在字符串文字中,如何使用可以解释为十六进制数字的文字字符立即跟随十六进制转义序列?例如,如果我写这个文字......

"BlahBlah\x04BlahBlah"
Run Code Online (Sandbox Code Playgroud)

... 'B'紧接着'4'将被解释为十六进制转义的一部分,因为它是一个有效的十六进制数字.

我如何编写一个字符串文字,表示如果将'4'其作为十字转义的最后一个字符,上面将表示的字符串?

c string

8
推荐指数
1
解决办法
612
查看次数

字符串错误检查

我在我的代码中使用了很多字符串函数,如strncpy,strncat,sprintf等.我知道有更好的替代方案,但我被交给了一个旧项目,使用了这些功能,因此我必须坚持使用它们以实现兼容性和一致性.我的主管非常挑剔错误检查和健壮性,并坚持每次使用这些功能时都会检查缓冲区溢出违规.这在我的代码中创建了很多if-else语句,看起来不太漂亮.我的问题是,每次调用其中一个函数时,是否真的有必要检查溢出?即使我知道不可能发生缓冲区溢出,例如使用sprintf函数在字符串中存储整数时

sprintf(buf,"%d",someInteger);

我知道64位系统上无符号整数的最大长度可以是20位.另一方面,buf超过20个字符.在这种情况下我还应该检查缓冲区溢出吗?

c++ string error-handling

7
推荐指数
1
解决办法
749
查看次数

等到rising_edge(clk)vs如果rising_edge(clk)

我在VHDL中遇到了两种样式的流程声明。

process(clk)
begin
    if rising_edge(clk)
....do something....
Run Code Online (Sandbox Code Playgroud)

另一个是

process
begin    
    wait until rising_edge(clk)
    ....do something....
Run Code Online (Sandbox Code Playgroud)

每种方法的优缺点是什么。

vhdl

5
推荐指数
1
解决办法
6540
查看次数

在堆上分配vs在递归函数中在堆栈上分配

当我定义一个递归函数时,在堆上分配局部变量,然后在函数返回之前清除它们比在堆栈上分配它们更好/更安全.嵌入式系统上的堆栈大小非常有限,当递归运行得太深时,存在堆栈溢出的危险.

c c++ embedded recursion memory-management

2
推荐指数
1
解决办法
1258
查看次数

Python 字符数组声明

有没有办法在python中声明一个固定大小的char数组,例如在C中
char myArray[100]
我也想用NULL初始化所有字符。

python arrays char

1
推荐指数
1
解决办法
5万
查看次数