小编Div*_*vya的帖子

一个类或对象的"sizeof"可以为零吗?

我们都知道空类的大小或空类的对象将是1个字节.我遇到了sizeof一个类及其对象变为0的东西.该程序在语法上是正确的,因为没有编译或运行时错误.这是未定义的行为吗?我试图执行的用例有意义,看起来像一个有效的用例?不给类中的数组提供精确的下标或大小是一个很大的错误吗?代码段如下:

#include<iostream>
using namespace std;
class A
{
   char a[];
};
int main()
{
    A b;
    cout<<sizeof(A)<<endl;
    cout<<sizeof(b)<<endl;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出:

0

0

sizeof一个空类是一个字节(非零基本)和其中的原因是说,像"为了确保不同的对象有不同的地址."

在这种情况下会发生什么sizeof呢?当班级来零时?注意:也观察到相同的行为int a[].

c++ class object

20
推荐指数
2
解决办法
1638
查看次数

没有涉及继承的虚函数

当没有涉及继承时,是否需要虚拟?根据我的理解和知识水平,我认为虚函数或关键字与继承紧密结合.我对吗?除了继承之外,还有虚拟函数可以使用的地方吗(基类和派生类)?

c++ inheritance

3
推荐指数
1
解决办法
75
查看次数

youtubeDL无法下载视频时,恢复下载后续视频

我正在尝试开发一个Python脚本来下载一堆youtube视频,这些视频是使用youtube-dl模块从csv文件输入的。由于单个视频下载失败,脚本停止。我需要脚本继续下载下一个视频,而忽略了无法下载的视频。有人可以帮我如何在python中处理这个问题吗?

exception-handling python-2.7 youtube-dl

3
推荐指数
1
解决办法
1510
查看次数

realloc如何处理使用calloc分配的内存?

当我们尝试调整malloc使用分配的内存大小时realloc,我们通常会这样做:

char *ptr = (char *)malloc(size_1);
ptr = (char *)realloc(ptr, size_2);
Run Code Online (Sandbox Code Playgroud)

如果size_2可能大于或小于size_1.如果新大小较大,则旧数据不会丢失,新分配的字节未初始化.ptr如果旧地址处没有足够的内存来连续存储所有字节,则包含的起始地址可能会改变.realloc将旧块的内容移动到新块中,并ptr指向该新块的初始字节.

但是,如果使用分配内存calloc,我无法理解realloc函数的行为方式.有人可以给我一个关于如何realloc分配内存的工作的简要概述calloc吗?

c malloc realloc calloc dynamic-memory-allocation

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