小编use*_*405的帖子

size 如何与 memcpy 一起使用?

我的问题涉及以下代码的安全性:

#define ARRAY_SIZE 10

std::array<BYTE, ARRAY_SIZE> myArray;
char* string = "this_sentence_is_longer_than_10_bytes"

memcpy(&myArray, string, ARRAY_SIZE);
Run Code Online (Sandbox Code Playgroud)

结果:myArray 已[0-9]填满"this_sente"

就安全而言,我需要知道“字符串”的其余部分发生了什么。由于给定的大小,它是否被完全忽略,或者是否被从数组末尾抛出?

编辑:我现在有

#define ARRAY_SIZE 10

std::array<BYTE, ARRAY_SIZE> myArray;
char* string = "this_sentence_is_longer_than_10_bytes"

if (strlen(string) < ARRAY_SIZE)
{
    BYTE clearArray[ARRAY_SIZE] = {0};
    memcpy(&myArray, clearArray, ARRAY_SIZE);
    memcpy(&myArray, string, strlen(string));
}
else
{
    memcpy(&myArray, string, ARRAY_SIZE);
}
Run Code Online (Sandbox Code Playgroud)

现在,如果字符串短于 10 个字符,它会用零填充 std:array,否则它使用初始方法。

c++ arrays memcpy

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

从矢量中删除项目

我正在寻找从矢量中删除多个项目的最有效方法?

基本上我将在向量中搜索一个标志并删除具有该标志的对象.

不过,我听说从向量会搞乱删除对象的迭代器,所以什么是最有效的方式来循环虽然矢量(含潜在的成千上万个对象),并删除那些有特定的标志?

我希望不必多次遍历向量.

c++ performance vector

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

标签 统计

c++ ×2

arrays ×1

memcpy ×1

performance ×1

vector ×1