![](/img/trans.png)
[英]Are there optimized versions of memmove for when I know the direction?
想象一下,我正在一個小向量中實現插入和刪除。 (如果這是 C++,則進一步假設向量元素是可平凡復制的。) 當插入到這個向量的中間時(假設我已經確定不需要重新分配),我知道為新元素騰出空間的副本必須將字節移動到更高的地址。 同樣,在這個向量的中間實現擦除時,我知道要消除已擦除的 object 的副 ...
[英]Are there optimized versions of memmove for when I know the direction?
想象一下,我正在一個小向量中實現插入和刪除。 (如果這是 C++,則進一步假設向量元素是可平凡復制的。) 當插入到這個向量的中間時(假設我已經確定不需要重新分配),我知道為新元素騰出空間的副本必須將字節移動到更高的地址。 同樣,在這個向量的中間實現擦除時,我知道要消除已擦除的 object 的副 ...
[英]Move element at the end of a space of memory allocated with malloc
我分配了 memory 和 malloc 的空間(有一個矩陣),我必須在最后移動“行”,我試過這個: p_in_retained 是行數,問題是當第二個循環結束時,我在最后一個和倒數第二個元素中有相同的元素,例如,假設這是初始矩陣: 我希望擁有的是以下內容: 我得到的是: ...
[英]Can memmove accessing the contents of a FILE* and delete information?
memmove 是否適用於文件指針數據? 我正在嘗試從 C 文件中刪除一行。 我正在嘗試使用 memmove 使其比互聯網建議的創建重復文件並覆蓋它更有效。 我已經調試過,但我無法弄清楚為什么這段代碼不起作用。 我要求輸入。 邏輯是一個for循環。 在循環內部,我有邏輯來做一個memmove , ...
[英]How to remove the first string element in array of string
假設我有這個字符串數組 我的目標是刪除“Me”,以便生成的數組是: 有沒有一種方法可以在不運行for循環並將元素存儲在新數組中的情況下執行此操作? 我嘗試了增量操作arr++ ,但出現錯誤。 ...
[英]Problem of "cyclic data " in x86_64 assembly code
我試圖在匯編中編寫 memmove:問題是在我的部分數據中我有兩行:源和目標,當我試圖將 20 個字節從源傳遞到目標而源只有 15 個字節時從源傳遞到目標的第 16 個字節需要是目標的第一個字節,但傳遞的是源的第一個字節, 在第一張圖中我們可以看到RAX在21上那么需要傳遞的數據是source+21 ...
[英]rep movsb for overlapped memory
我想知道 rdi 和 rsi 中重疊和非重疊 memory 指針的指令“rep movsb”是否有區別? 即通過rep movsb 指令實現memcpy 和memmove 有什么區別嗎? 在本文檔https://www.amd.com/system/files/TechDocs/24594.pdf ...
[英]Passing a multidimensional array as an argument in C
我正在嘗試在幫助程序 function 中初始化矩陣,但在訪問幫助程序 function 中的矩陣時收到警告,我無法弄清楚如何修復。 我正在閱讀有關多維 arrays 的內容,甚至在多個示例中看到了用於傳遞和訪問矩陣的相同符號,但我的會產生警告,我不太清楚為什么。 據我所知,此錯誤意味着該參數不是 ...
[英]Valgrind memcpy Invalid write of size 8 (uintptr_t *)
我有memcpy和valgrind ,告訴我Invalid write of size 8的Invalid write of size 8 。 我已經找到了有問題的代碼在哪里,但我不知道為什么它有問題......我知道還有其他問題,但他們並沒有真正幫助我。 以下是我在有點“通用”的堆棧上的方法中最 ...
[英]Does comparing two pointers do more than to just check their adresses?
我正在重寫 libc 的一部分,更具體地說是 memmove 作為練習,在我自己無法完成之后,我查找了它的源代碼並發現了這個(以及它的變體): 我的問題涉及第 5 行if (d < s)對我來說這只有在d和s包含dest和src的大小時才有意義,據我所知這是不正確的。 那么除了檢查地址的位 ...
[英]Adding and Deleting elements on a Array of Structs Using memcpy()
所以我有這個 Contact 結構和一個包含一堆 Contact 實例的數組。 我的問題是我使用 memcpy 並嘗試使用 mmove 為此數組“刪除”和“添加”聯系人元素。 當我調試和運行程序時,它似乎工作得很好。 我可以跟蹤從數組中添加和刪除的聯系人,但是當我在沒有調試且沒有單步執行程序的情況下 ...
[英]How to implement memmove, not just memcpy, in assembly?
我試圖實現從 C 到 x86 程序集的 memmove,所以我寫道: 但這是錯誤的,為什么呢? 根據: http://www.cplusplus.com/reference/cstring/memmove/ 將 num 個字節的值從源指向的位置復制到目標指向的 memory 塊。 復制就像使用了中 ...
[英]Using std::memmove to work around strict aliasing?
可以使用std::memmove()將 memory“移動”到同一位置以便能夠使用不同類型為其取別名嗎? 例如:#include <cstring> #include <cstdint> #include <iomanip> #include <iostr ...
[英]Why does ctypes.memmove take constant time for sizes of different magnitudes
當我運行以下代碼時, 在我的筆記本電腦上,output 是 用於復制 10 個字節並且是 用於復制 10000 個字節。 我的問題是:為什么 ctypes.memmove 對於不同大小的大小需要恆定的時間? ...
[英]memmove implementation throws segmentation fault while copying a character array
嗨,我嘗試編寫自己的 memmove 版本,但發現以下代碼導致分段錯誤。 如果有人可以幫助我弄清楚為什么會發生這種行為,那就太好了! 但是,當我使用類似:char source[20] = "Hello, this is Piranava" 時,代碼可以正常工作! 但是,如果我更換 和 ,效果很好 ...
[英]implementing memmove without copying the source data
我需要自己實現標准的 c function memmove。 在進行實際復制之前,我可以避免將源(由 str2 指向)復制到臨時緩沖區嗎? 謝謝! ...
[英]What's the difference between memmove and bcopy?
我了解memcpy和memmove之間的區別: memmove處理src和dst的重疊。 我檢查了bcopy的手冊頁,它似乎也可以處理重疊。 所以我想知道memmove和bcopy之間是否有任何區別? ...
[英]Why does C abstract away sizeof during pointer arithmetic?
我在 C 中從頭開始重新創建一個數組,並實現了 append、插入等常用功能。我已經完成了大部分工作,但是當我嘗試在索引 C 處運行我的“插入”ZC1C425268E68385D1AB4A5074 時(相對於 F94D1AB45074)在“for loop”output 打印訪問最后一個元素期間, ...
[英]Is there a memmove/memcpy wrapper for STUArray?
我正在將程序從使用MVector Word32到STUArray Word Word32 。 在我的矢量代碼中,我使用unsafeMove來移動矢量切片; 認為它可能是為了提高效率而包裝memmove 。case dst ⊕ 3 of src | n < src + w -> do ...
[英]Trying to delete product from my list using pointer and struct
在這個 function 中,我試圖從列表中刪除一個產品。 Visual Studio 在下面顯示了一條紅線 和 但不低於 productName和unit是char ,而amount是float 。 ...
[英]Seeking algorithm for "dual-modulo array memmove"
由於所請求的算法有些特殊,我試圖先解釋我想要什么,然后我會問一些我不太確定的具體問題: 介紹該算法不是 C 特定的,但我將從一個 C 示例開始,即memmove() :Memmove 可以將 memory 的區域復制到另一個區域,正確處理重疊。 基本上就是說如果源-目的地址低於源地址,則復制第一項, ...